{"_id":"@socket.io/sticky","_rev":"8-23cd05df64b62b4dfe0b35326f9458b3","name":"@socket.io/sticky","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"@socket.io/sticky","version":"1.0.0","author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","_id":"@socket.io/sticky@1.0.0","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"dist":{"shasum":"9ced8c9740f6c9a78d1f17f341c0a3e5dc2a1ef2","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-1.0.0.tgz","fileCount":5,"integrity":"sha512-rzSirS3BpOquZjfsBFn7EqrSA7+l7ZW5/TvuO1/2WT+W53u3OAybAICYPhEfWkh+W3S3zXP3S+KvJ/35jXqqpQ==","signatures":[{"sig":"MEUCIAGYt3BAqJEOMeJePI1Xn4lmEkTPXNfnpM6DBhgw/nw8AiEA2G8zAxi8488K4vrrwl9ZFf75+Vnu6vcQJPDPuAuZsEw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8114,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDmtjCRA9TVsSAnZWagAAgDoP/AiRE/ugiiF/MSnnto51\nrCTVQdFJwyKdPTwRHaqV1mx5vB38+LzTNKl0xVYby2tbCYJA6rigvbExWg3C\n5CZnVOzqGlZdJiAxu0nTMnYFbxvq7/l8LCZwbHKaWxoX9ZBqHnZ87KqarIqI\nGrSwpoblI+sa/xmvCZgZ+HMxPMplYlA+8Iu70+1xjeG/Ke+k5H8w3YHNM5G9\nZc2NGOJZ6GntarCGGXpywiIGrdJoqpsGu4K/4iLmji/yrknIgqxAMNpG9zYI\nVoNEP/+iJhdXwO4+lTgBo4J5z2SSk4FLuso70tlaImhgsJYXzt+TZtQbIVXT\nk5jTjw4TWjQXk4lP8dPIg0g2qlvsJ1wu6LAMAsVmjHjnr4mIJepej+8olwar\nKTFLVLcdWyvANH8PRUZ8KoGbR4ozeSGXhllF/8wvFPs5tlFDFktnpnD7Xo4j\nTITBRJzMJOaCTTl2PYkMi3rgEx0UCD6JbIcOgIOts4A0MRQGaH2HVry39Jaq\nDuJDp/Wbspke0pVP4ti1uIVnQEKmYNADOqm7FVmtHuKJP0eFmLZtpUY3v1Ng\n48lrmQRxxIZWhK35yzaIPEA/kPWdNL/zGlg43szKmIfP58XAnXPfaNRJzO9n\nWQovcQJ2jFVvcKH/9geKlPzRe5X11haf/DEVJs9grLPc1Ndby9aAV581RY8Q\nDZ0m\r\n=PJTj\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"3aed346b61279259be8f1a8309c58963aac83173","scripts":{"test":"npm run format:check && nyc mocha --timeout 5000","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"_npmVersion":"6.14.8","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"_nodeVersion":"12.19.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sticky_1.0.0_1611557731271_0.7774854295360343","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@socket.io/sticky","version":"1.0.1","keywords":["socket.io","websocket","cluster","node.js"],"author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","_id":"@socket.io/sticky@1.0.1","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-sticky#readme","bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"dist":{"shasum":"d0ea2f2da7177ba900c7065c92c8af39915fbcdf","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-1.0.1.tgz","fileCount":5,"integrity":"sha512-g5vmW25QZ1sDA6/NqgKJHhUKWI6b11BPWqwQBvPTVodGqbYMkfuY7hQtEXDoUPf+0WhySgcdVLf9o2AgOAXUhA==","signatures":[{"sig":"MEQCICvMbOZb6O48yLTSqPEgS08dU+DIxHo6AnTC/Kl2rTOgAiAxRmM8CH/J80thSh4n0xzL8raVkMiCRZzF9+Mito/6fw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":9167,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg3kOZCRA9TVsSAnZWagAAL0YP/2C1XByuxokm84qyCdPj\n9I9W4dJfwGqePzN5b5JzirVXd256KjztP6L1vDeA0Ls6cNBAYd0dKntlxLlR\nQHb751W1/rMLVZiNh4M4NrF+25MTX/1dTyD3Lhcv5TlicasxjVyD7dyDVxCA\nKRrBe7/tmETRh5i72iAQBjv4PPluK72hbypMqi2agnFo/187zlNE/cWuySNE\nvoQZEcnLw8h9NPzw0ykwUPrvJku6NvjcFcVDoN3yxXXbmQcygaq/KhgMy0VV\n7cwi00rA1hb+s5DMqq1TCThRLwLhGT5G8w48M0WA2CxPpxWwZl54Gw6TUk+I\nBwaVO2fCYDAu0V23TNg5P+hT1eN1vH6lG+zPCa8jSrQ87NrwTtIUlobhqcZI\n2GvgYbknd4WMfvN4O8biprrknl05VCdQuskgrMOsVnyUOfQTt8HFGxsNl5fq\ngF/VR2wvxdGiYXb3/qYdIcOJAf+XJhXe+ndIn1prYufQNOJmxJatbpIiRJwH\nTo+kfJ7TYxDAW6V2NkngKJyKgL7id40VP7c+cbS8s6iQq4SHTQRdnZFKyKqw\nxlEsSHpMMPaiH2v4fZY9/5hvG7SUJH829lPkhoiBZa567FF0ES+NCVSnYwAi\nP1SKMH/hg94aRcpAY12FkdEcL7BaF06syePa9/1yMb+ED6GKA56vB+yDxDR2\nxW19\r\n=27SB\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","gitHead":"56fc57281479ee2895de33eb30c4e5d8cf1722df","scripts":{"test":"npm run format:check && nyc mocha --timeout 5000","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"_npmVersion":"6.14.8","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"_nodeVersion":"12.19.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sticky_1.0.1_1625179032688_0.7336290104080678","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@socket.io/sticky","version":"1.0.2","keywords":["socket.io","websocket","cluster","node.js"],"author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","_id":"@socket.io/sticky@1.0.2","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-sticky#readme","bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"dist":{"shasum":"4944e63d0677d0a666310b85ec036162693498a2","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-1.0.2.tgz","fileCount":5,"integrity":"sha512-70EyGAPfwowx7ItHBd9yTDuLzjChi5K5vh65b3RpANJnqprXoe69wFu//VAbHjSXMnNjcSZNH9pXHERLFj1WKg==","signatures":[{"sig":"MEQCIH3sZjutk5S00Lba4ZHD2sYlvXUZtwqNEfeWgeoobsbFAiA4KkrH4o4akBWBxTDL431H8mtDZ4ydhHIFaiZzq7C/DQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10372,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjYMNsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9ZhAAot0whXl17eLfjSNxW3yNg083q1lAWH7mB3HI2YYlVj7FH3hN\r\nNCdzVcI2/CP8bAlO649LBLq59+cH8gxVeDPdhnofBJQ14jCFPHTfqCW2J/Un\r\niPArNhFoUgxIeFhtW8PlA4UqZkzwWnniY47dYMiO/QJIDjubeV9nizs9lcDq\r\nTpLwE28KHU8Y/PaD2WkeAlbQWDftSmmAhN3BopY+Jb43Q5Ssz6xjm6gBEpAL\r\n5gcmFCCYnSTQDo55+t8AkncCpM5Y+fdRRgUanr0ku0LKa8drX1idMdpdbtTb\r\n0zr1cW90trwECTLqg+sRfLQZNISfRrBlFZlEzoiOv0C9TEve1SRcaqdl4Pas\r\nW8EewuutiZjhxv0hAJzVx4HIEXLh3cr9VpWsQyo4cUvzu3EELFZmral2EqwU\r\nApdQQkztRk8K72Xf62Sv6ssEtdbmoeR1594LG/OUfl0IXy+wV8/n1CateMM1\r\nlTWn/2y6bXvEGmsQ2XdH2c/42dXzrGTXwudY93UuxH2w6KcZ8jIXacBuxvO1\r\ndD7iiPz4h6q5JQLGrwG7Xu4xyKlvO4zyRn4N6H+nVgviF6jZEkjTjjyw0Tmx\r\nPU4N8W1y+Qr4S95SXkD6OCy23gqD54UH+K2NjIEQb672ieuERGwZAI+EjUWY\r\npPxLjlc9PdSBk8D39lAE/SFtUhC29VzHMB0=\r\n=hxdu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"f59a376dd260fa45db8cf3ccbce9c4537875f17d","scripts":{"test":"npm run format:check && nyc mocha --timeout 5000","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"_npmVersion":"8.11.0","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"_nodeVersion":"16.15.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sticky_1.0.2_1667285868524_0.981100967470119","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@socket.io/sticky","version":"1.0.3","keywords":["socket.io","websocket","cluster","node.js"],"author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","_id":"@socket.io/sticky@1.0.3","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-sticky#readme","bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"dist":{"shasum":"81cba46d9653ddce93a80574a04f5ba9886cdeca","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-1.0.3.tgz","fileCount":5,"integrity":"sha512-4uPG2He1FMgBSjavK/yIHWEno1AhzQD1R8MmLBeqp5cI7lwtvJPZ+QZoV3lOZOTX1W64a95wV4xEZXhnOscUEQ==","signatures":[{"sig":"MEUCIGBCTR9Eo1Al9UTnYG8kNFefqHkeNfsM42EWVYp+3LIHAiEA7z3iazkujV55OVyYSlVBvmLbsiUvwIdceOokqlqQ8g0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+JtCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpgfQ/+NOeituwV9er59cqyJedct+/b1N8bz5cvvJ1C/OyToKq8cuA2\r\nE/Cw76pgwRramG7Nx3zJkAeRX75BPvh5c0vaDsv9FoG5yCvIPHsG7N5iBkb6\r\nFmIQkEYpSlG8WXvTr3QfTdJds2bRtTG3oa1xmtUREFVHrSuaVivmTKk7go5B\r\ntV2pKHRoGvfXk5CNRk4VYfeVoeWj3U/bUwQwUuulna+x7YXypeDFKEfric7Z\r\nzhJzkFiToMuBlpaQnwtznxXTgW4jtkdMsV3/w+DdYiwVRJ6olmbIf/OUGVKp\r\noLkD+zDzs5YtPnaZBy8ymYsf/4CerwBOgorqsGjZuhg7+CYubvnjkJeGtHsR\r\noJzqiWEUJnuiVTUHWylw3Fj/2ypI3Pvb2ZcHp3RShA5Pa52CZp0Vye42/6k3\r\nifapdi6SX7lTNLs8OgVxsEJ1SfwaOMeJ2gTS+cb4ZTTpLxLgES0xFSRcUkoE\r\n6awSsUwpYOCKwxtJUM0YcpVMrUq2b2geJgeL4ih+N9v83de7+mSq5L7kZDYb\r\nib9B9ixo2uALzrscksNg+lbJrdZPakq3534P8w9XE/oaVaGFHEa0z9rw0qIh\r\ncFmcWpupxTmrKglNQ4TKWQ0qIduZ28xyvRpcL9jYAxRWAi8nO1qlO7RGvNb2\r\nhfHF5BjL6cYQI3PP7AHdKH/GgtihIybHsOI=\r\n=kCoN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","types":"index.d.ts","gitHead":"e7f0375e23677a63da1e9de861bedf2bf7e51296","scripts":{"test":"npm run format:check && nyc mocha --timeout 5000","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"_npmVersion":"8.11.0","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"_nodeVersion":"16.15.1","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sticky_1.0.3_1677237058746_0.513311920856661","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@socket.io/sticky","version":"1.0.4","keywords":["socket.io","websocket","cluster","node.js"],"author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","_id":"@socket.io/sticky@1.0.4","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-sticky#readme","bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"dist":{"shasum":"5f6d3ae62881b17e0fb756c6074f18ddb7b2014f","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-1.0.4.tgz","fileCount":5,"integrity":"sha512-VuauT5CJLvzYtKIgouFSQ8rUaygseR+zRutnwh6ZA2QYcXx+8g52EoJ8V2SLxfo+Tfs3ELUDy08oEXxlWNrxaw==","signatures":[{"sig":"MEUCIQDsvkAG5HGC9khFIVb/QBfDJW7//pqX/Pdd+gE0exZlYwIgZ+gMX28qau2s/r4nATLr4Y7aJrCcj49Lhgvzg0zAYNo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11066},"main":"index.js","types":"index.d.ts","gitHead":"518bd0b989e20fadecbbb6b225578bfca82ad963","scripts":{"test":"npm run format:check && nyc mocha --timeout 5000","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"_npmVersion":"9.6.7","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"_nodeVersion":"20.3.0","_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sticky_1.0.4_1691825710219_0.42591011420524216","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@socket.io/sticky","version":"2.0.0","keywords":["socket.io","websocket","cluster","node.js"],"author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","_id":"@socket.io/sticky@2.0.0","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-sticky#readme","bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"dist":{"shasum":"8cdabc786d7eb36ab474e10a25076a2d7ffb68a8","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-2.0.0.tgz","fileCount":5,"integrity":"sha512-DTzttq64DyaDqPv8p2w/1g/+pRcMyIcdinjlg4GhlYSodmvP9lzX01tGNiYGLMN1z70DC6YHKuQGDOXj9km/Gg==","signatures":[{"sig":"MEUCIQCP1Z+zUNTYdAfN+3AFrJ6YuyW+kJXfYfaGNJXxKg/aHQIgcXszydVvxDyE8Rai3iTtgWgFCBkqZRYX73vZKXWSjMw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@socket.io%2fsticky@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13041},"main":"index.js","types":"index.d.ts","gitHead":"f8605691afc75744a56ce09ff983a24cf6102fef","scripts":{"test":"npm run format:check && nyc mocha","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:325c35a5-81af-4c56-bb99-3be3121a5af1"}},"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"_npmVersion":"11.17.0","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"_nodeVersion":"26.5.0","dependencies":{"debug":"~4.4.3"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/sticky_2.0.0_1784292178991_0.04765059199828148","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"_id":"@socket.io/sticky@2.0.1","bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"dist":{"shasum":"c243f2756bb0e5daf0fba47046fd20fb9da31d21","tarball":"https://registry.npmjs.org/@socket.io/sticky/-/sticky-2.0.1.tgz","integrity":"sha512-89Zi3asaY+hPpfJaZFjTQpQ/58hF/Qx9/KUBjIEyR74U9yLzw658HYxZUiG2qi8fWooGjYJLUB83Kps1mDC3Og==","fileCount":5,"unpackedSize":17757,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@socket.io%2fsticky@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC2+ZQReDACeePDJEiA5+4DJPwgxBCBjljJPLcDh70/PAiBOpBoLMCiM4S+sV8HhplmVfMlVPToKTktooYuLOWLmwQ=="}]},"main":"index.js","name":"@socket.io/sticky","types":"index.d.ts","author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"gitHead":"23f7931d8d6a81f649afad11c234e22db75ad2d5","license":"MIT","scripts":{"test":"npm run format:check && nyc mocha","format:fix":"prettier --write \"index.js\" \"test/**/*.js\"","format:check":"prettier --check \"index.js\" \"test/**/*.js\""},"version":"2.0.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:325c35a5-81af-4c56-bb99-3be3121a5af1"},"approver":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}},"homepage":"https://github.com/socketio/socket.io-sticky#readme","keywords":["socket.io","websocket","cluster","node.js"],"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"_npmVersion":"11.17.0","description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","directories":{},"maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"_nodeVersion":"26.5.0","dependencies":{"debug":"~4.4.3"},"devDependencies":{"nyc":"^15.1.0","mocha":"^8.2.1","prettier":"^2.2.1","socket.io":"^3.1.0","socket.io-client":"^3.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sticky_2.0.1_1784726058783_0.49183386514832006"},"_hasShrinkwrap":false}},"time":{"created":"2021-01-25T06:55:31.271Z","modified":"2026-07-22T13:14:19.202Z","1.0.0":"2021-01-25T06:55:31.425Z","1.0.1":"2021-07-01T22:37:12.813Z","1.0.2":"2022-11-01T06:57:48.690Z","1.0.3":"2023-02-24T11:10:58.936Z","1.0.4":"2023-08-12T07:35:10.392Z","2.0.0":"2026-07-17T12:42:59.081Z","2.0.1":"2026-07-22T13:14:18.883Z"},"bugs":{"url":"https://github.com/socketio/socket.io-sticky/issues"},"author":{"name":"Damien Arrachequesne","email":"damien.arrachequesne@gmail.com"},"license":"MIT","homepage":"https://github.com/socketio/socket.io-sticky#readme","keywords":["socket.io","websocket","cluster","node.js"],"repository":{"url":"git+https://github.com/socketio/socket.io-sticky.git","type":"git"},"description":"An alternative to the sticky-session package (https://github.com/indutny/sticky-session)","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"readme":"# Sticky sessions for Socket.IO\n\nA simple and performant way to use [Socket.IO](https://socket.io/) within a [cluster](http://nodejs.org/docs/latest/api/cluster.html).\n\nUnlike other packages like [sticky-session](https://github.com/indutny/sticky-session), the routing is based on the session ID (the `sid` query parameter).\n\n![Cluster diagram](./assets/socket.io-cluster.png)\n\nSee also:\n\n- [sticky-session](https://github.com/indutny/sticky-session) (routing based on `connection.remoteAddress`)\n- [socketio-sticky-session](https://github.com/wzrdtales/socket-io-sticky-session) (routing based on the `x-forwarded-for` header)\n\n**Table of contents**\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [How it works](#how-it-works)\n- [Notes](#notes)\n- [License](#license)\n\n## Installation\n\n```\nnpm install @socket.io/sticky\n```\n\n## Usage\n\n```js\nconst cluster = require(\"cluster\");\nconst http = require(\"http\");\nconst { Server } = require(\"socket.io\");\nconst numCPUs = require(\"os\").cpus().length;\nconst { setupMaster, setupWorker } = require(\"@socket.io/sticky\");\nconst { createAdapter, setupPrimary } = require(\"@socket.io/cluster-adapter\");\n\nif (cluster.isMaster) {\n  console.log(`Master ${process.pid} is running`);\n\n  const httpServer = http.createServer();\n\n  setupMaster(httpServer, {\n    loadBalancingMethod: \"least-connection\", // either \"random\", \"round-robin\" or \"least-connection\"\n  });\n\n  setupPrimary();\n\n  httpServer.listen(3000);\n\n  cluster.setupPrimary({\n    serialization: \"advanced\", // prevents conversion of Node.js Buffer to string over IPC\n  });\n\n  for (let i = 0; i < numCPUs; i++) {\n    cluster.fork();\n  }\n\n  cluster.on(\"exit\", (worker) => {\n    console.log(`Worker ${worker.process.pid} died`);\n    cluster.fork();\n  });\n} else {\n  console.log(`Worker ${process.pid} started`);\n\n  const httpServer = http.createServer();\n  const io = new Server(httpServer);\n  io.adapter(createAdapter());\n  setupWorker(io);\n\n  io.on(\"connection\", (socket) => {\n    /* ... */\n  });\n}\n```\n\n## How it works\n\nThe first HTTP request (without `sid` query parameter) is forwarded to a random worker (based on the `loadBalancingMethod` option).\n\nThe underlying Engine.IO server creates a new session and emits a `connection` event with the session ID. The worker sends this session ID to the master, which stores the relationship between the worker ID and the session ID.\n\nFor subsequent requests, the `sid` query parameter is extracted by the master process, which then forwards the handle to the right worker.\n\n## Notes\n\n- this package is not needed if you only use WebSockets (which might be a sensible choice as of 2021)\n\n```js\n// client-side\nconst socket = io({\n  transports: [\"websocket\"] // HTTP long-polling is disabled\n});\n```\n\n- in a multi-server setup, you will need to use another adapter, like the [Redis adapter](https://socket.io/docs/v4/redis-adapter/)\n\n![Cluster diagram with Redis](./assets/socket.io-cluster-redis.png)\n\n- this module is not compatible with an HTTPS server\n\nFor more information, please see [this issue](https://github.com/socketio/socket.io-sticky/issues/3).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}