{"_id":"@socket.io/cluster-adapter","_rev":"6-a33dd1cc336918411a24530fbbde4ea0","name":"@socket.io/cluster-adapter","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@socket.io/cluster-adapter","version":"0.1.0","keywords":["socket.io","cluster","adapter"],"license":"MIT","_id":"@socket.io/cluster-adapter@0.1.0","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-cluster-adapter#readme","bugs":{"url":"https://github.com/socketio/socket.io-cluster-adapter/issues"},"dist":{"shasum":"4d47642372384274454ddfadbe69ff7aca21e124","tarball":"https://registry.npmjs.org/@socket.io/cluster-adapter/-/cluster-adapter-0.1.0.tgz","fileCount":6,"integrity":"sha512-8fSpsJxsFzOt4t3kZ19DF/s7vAMz5OVSHjAu8ekegf1/VY10idbBlhgAgM6cP8tupQt+goKA5OxIs3HKgbBppg==","signatures":[{"sig":"MEYCIQDXY2WpihxXxLiSeyxVHSEhlQllbVtv1hYJXsSnGMhcbAIhALDbC3UX9MMHXLDwmh1o0iJsaRKQgHMEF7XAgyrW60sn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22266,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg0W/1CRA9TVsSAnZWagAANEwP/2PWoGyxzHSv3F/dmlZ/\nhsh8Q/bRHM4ehk0/fJSqzHsuE6EHLSF+XRPqK3c01aqMD6Hif1CnpGmddMTB\nf4rfR7gSOi+O4O4CoDK9p7aoeQ+NZV6AeKlvgFHE8qp5eDs/EXuJIRRl5Nke\nEuH4N401R2okVMlEXPshqyesmS1JojT3U5PJt1wCavfgwBm9hMPgaaXURSzY\nA1/M89XAb0K7GmUZCuMOXaqzqYl6Om9JXXMJRNf/zoDyXTnUtYYmQ7E3kqHB\n7klUwj2ZmFWYWd3J3DwgnKgch0695UIfWuSuCToZWugnktXHAQTVbMO6wgTK\nh86tJikfrm0Hiwi+P5f5WgGhW9hJRjmt00sILhGnJ/dK9Zlwuasv2RDIaQVb\n22kWuH9vzSctiPRD+vgpfZLZUo5kCKcRkP2yaCIJNfTOdw7Y8kbpC2/hOaRn\nyaaAesfKsOYCdRFug5GccW9HSvq1XUbtE1OLq+GrVa6xjIEKKBe3zct1Na0l\n/pcLpBAonSvZ1tN1ALHI5hY/NlQqP9Rn6Ywu7z+wyXhOMrR8banBeZh0cEDH\njg4KUsgbw5EiDT5nWvDj8X0YxCC+vyrW5WUYPgxphX+Glq8S+PoNghguigik\nbObyeTDSdbDFn4Sg9ItaXsJ3o94OmPzD6718a/JCP8GkH4NDEt3VWmCaNvyb\nbSF/\r\n=a2O9\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=10.0.0"},"gitHead":"6397c1bdfdf17477fb17be1285094e8d1b3a5670","scripts":{"test":"npm run format:check && tsc && nyc mocha --require ts-node/register test/index.ts","prepack":"tsc","format:fix":"prettier --parser typescript --write 'lib/**/*.ts' 'test/**/*.ts'","format:check":"prettier --parser typescript --check 'lib/**/*.ts' 'test/**/*.ts'"},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+ssh://git@github.com/socketio/socket.io-cluster-adapter.git","type":"git"},"_npmVersion":"6.14.8","description":"The Socket.IO cluster adapter, allowing to broadcast events between several Socket.IO servers","directories":{},"_nodeVersion":"12.19.0","dependencies":{"debug":"~4.3.1","socket.io-adapter":"~2.3.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.4.0","ts-node":"^9.1.1","prettier":"^2.1.2","expect.js":"0.3.1","socket.io":"^4.1.1","typescript":"^4.0.5","@types/node":"^15.12.4","@types/mocha":"^8.2.1","@types/expect.js":"^0.3.29","socket.io-client":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cluster-adapter_0.1.0_1624338421367_0.42522755685112035","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@socket.io/cluster-adapter","version":"0.2.0","keywords":["socket.io","cluster","adapter"],"license":"MIT","_id":"@socket.io/cluster-adapter@0.2.0","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-cluster-adapter#readme","bugs":{"url":"https://github.com/socketio/socket.io-cluster-adapter/issues"},"dist":{"shasum":"656e6c5492556dbad5dd3d3f959ba8a70f3f39ed","tarball":"https://registry.npmjs.org/@socket.io/cluster-adapter/-/cluster-adapter-0.2.0.tgz","fileCount":5,"integrity":"sha512-CZctHZdBNB9RIR3KBBwLdFKCZwILWeryoGeTHCChTs0vbnbjn2iwgB4AlYJEe0aJsFkwrYo/uY3pMGWNd0YbDQ==","signatures":[{"sig":"MEUCIB0LUvbN/Jre4lt71hcbf414v34wSu3HaH8Rh28/c5lgAiEAz+oqXqPIfORjSordCBqim0Yx/ve5odYfGWp0lCOVL8g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25656,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaqHLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo8IQ//QqPlNQvjMhDUgnT/m4zSJYQb3mhXHAjIZIURTh63P6WVl4vB\r\nzDhnB8T9c1tUoi70mJSQ+LQsgw/mJn56jxKp+1Y5NW0KIoe0M+gcGw0pGoI9\r\n8u2FUK5Ff9rsKZyLAI/EtcThT91oSV9rbFF7QFhUkDpjuag8LuR+ooolzbAq\r\nfACT9nwZ6Q3+d/l11sRNnCc/xlzUAeey1pikYgh3mLEqUTpLhU+MaSjXSr9M\r\nztMmrMc+dOHm4ucK9Fk9iiKQheZPBZKIPjVn/jsgF9L0MYbV6CPEhEnX1sm5\r\nWOnBe4bezuZn5yZkDWtSVVi6ly9V5tckjN5q/IDb2IvsKaE/NlneoHCcvZEL\r\nSbN0plDgp8MyB2qvkywEeq/oD5/1pe0Jx3qIczSzTSQo74kW37qricJ01Hb+\r\nn9HQh/0uldwIgu3OlR/tkvWlt7JncgG15Dv7Ddt4YvO9vBhNS2TAeLC8Sm3F\r\nsMoOPyvhsyh9EIupOeOwMngO7zOwAtd/D23yp6M8sdbh6vKbhWjid4zErzzP\r\nKn+xxqjc8eAieoISavCtVW/ehnK/RIglCJwyXaPzfdYGddJQRRgeZ/s+huok\r\nfl92S1ZE+pnPtvltwLonoMlEM0aycCz9pFRX6tEr72VyfJLPULacJh0D4Kxn\r\nOZD8avL1QkjFnpjdXhi7tOs5OltGtiBvzZo=\r\n=kKOp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=10.0.0"},"gitHead":"43f9ee8d23d2a4bc72ce4399c0b2b8445360f8cc","scripts":{"test":"npm run format:check && tsc && nyc mocha --require ts-node/register test/index.ts","prepack":"tsc","format:fix":"prettier --parser typescript --write 'lib/**/*.ts' 'test/**/*.ts'","format:check":"prettier --parser typescript --check 'lib/**/*.ts' 'test/**/*.ts'"},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+ssh://git@github.com/socketio/socket.io-cluster-adapter.git","type":"git"},"_npmVersion":"8.1.2","description":"The Socket.IO cluster adapter, allowing to broadcast events between several Socket.IO servers","directories":{},"_nodeVersion":"16.13.1","dependencies":{"debug":"~4.3.1","socket.io-adapter":"~2.4.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^8.4.0","ts-node":"^9.1.1","prettier":"^2.1.2","expect.js":"0.3.1","socket.io":"^4.5.0","typescript":"^4.0.5","@types/node":"^15.12.4","@types/mocha":"^8.2.1","@types/expect.js":"^0.3.29","socket.io-client":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cluster-adapter_0.2.0_1651155402794_0.35808190247891636","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@socket.io/cluster-adapter","version":"0.2.1","keywords":["socket.io","cluster","adapter"],"license":"MIT","_id":"@socket.io/cluster-adapter@0.2.1","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-cluster-adapter#readme","bugs":{"url":"https://github.com/socketio/socket.io-cluster-adapter/issues"},"dist":{"shasum":"e18d55da5e873f0eede8d24f074f7b43b73e982c","tarball":"https://registry.npmjs.org/@socket.io/cluster-adapter/-/cluster-adapter-0.2.1.tgz","fileCount":5,"integrity":"sha512-6PBOgghZJccrSs8ISEt8jJDuHRpNMvO+VZ7cHfkraFSoo1+2VS+p8QMiJ6p5ty+yGgEENgRo7jWdamupC1foJw==","signatures":[{"sig":"MEUCIQD8nSQu1pr6/X4BUyaQw8/+Erz1ZEIBz3h8iI/eyUz9/AIgGtztPbbeHTQn+CysR2geX3RKRQGtgDucZ1i1z6/C+7g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25786,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjR70ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrR7w/+Kx0BWwJL/IptLVaAjp2iebvnjfzTHmXZakh/in+YRLfO3HXc\r\nCyZ+5V/RZ89uprPUajpQHEmFVantHAkAzGFsFIaTm0LoTgQSXsD5Jq8bIDIu\r\no/kj9q99QUQ37wu/uLE2jzSjHkJzPvfXJIma2xBRN8+zeVt4paV48IIJv0uy\r\n3CySSTZjaKfccwGFZUXKu0AssTufXN17A/0zqYOBRSCbLAz7XFnqnZ3MYUQT\r\nbcuQTKbs43KRdqOzFW1ETaNSSPlirGkWf6ye08yuEn3VMZE/J+7/rNbN1Ehd\r\ngxWRSVO+wOt711YYrvouSnvniLWWKMwel4xJMof4omy7hFhvE0FxZGexncN1\r\nO43kbdOfmD/DpAUmq3VCPLztRKOv9lltrmadIY3PQ49Bnz8aJNBjRzH+t4sn\r\n/3KNiCIgiMxD+4fsBw0H6mVI0R43z4GIrgTyGaHpJah+vfwlTxDdjrDmwf+7\r\nOktmbI8kP3j3eDVwql2tlW80ftL3NhLyGdRnTNtUS5axZj15eBQnZ2vUjFdE\r\n1JUfp1VnYxIosgPh6LZQKNfJxPIh2RbRhGwZXhSqKePcT6h2htbWRa+8ukCq\r\nQt6rzLXdqSlYpx+AHyZPKZMceLkISL90xG4nARQthHoTf+uxcKiuN8jo5CQk\r\n7ai9OlAMsrpNzp0OmQhxJyVZbvXVPHB5k9w=\r\n=Hw8D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=10.0.0"},"gitHead":"fe840e2eb3f4f207c80321bd0d07defc86cbcd8d","scripts":{"test":"npm run format:check && tsc && nyc mocha --require ts-node/register test/index.ts","prepack":"tsc","format:fix":"prettier --parser typescript --write 'lib/**/*.ts' 'test/**/*.ts'","format:check":"prettier --parser typescript --check 'lib/**/*.ts' 'test/**/*.ts'"},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+ssh://git@github.com/socketio/socket.io-cluster-adapter.git","type":"git"},"_npmVersion":"8.11.0","description":"The Socket.IO cluster adapter, allowing to broadcast events between several Socket.IO servers","directories":{},"_nodeVersion":"16.15.1","dependencies":{"debug":"~4.3.1","socket.io-adapter":"~2.4.0"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^10.0.0","ts-node":"^9.1.1","prettier":"^2.1.2","expect.js":"0.3.1","socket.io":"^4.5.0","typescript":"^4.0.5","@types/node":"^15.12.4","@types/mocha":"^10.0.0","@types/expect.js":"^0.3.29","socket.io-client":"^4.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cluster-adapter_0.2.1_1665645849387_0.2003410602905551","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@socket.io/cluster-adapter","version":"0.2.2","keywords":["socket.io","cluster","adapter"],"license":"MIT","_id":"@socket.io/cluster-adapter@0.2.2","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"homepage":"https://github.com/socketio/socket.io-cluster-adapter#readme","bugs":{"url":"https://github.com/socketio/socket.io-cluster-adapter/issues"},"dist":{"shasum":"2b070774d3c157b4a4a33cde21ae0c624a4cec93","tarball":"https://registry.npmjs.org/@socket.io/cluster-adapter/-/cluster-adapter-0.2.2.tgz","fileCount":5,"integrity":"sha512-/tNcY6qQx0BOgjl4mFk3YxX6pjaPdEyeWhP88Ea9gTlISY4SfA7t8VxbryeAs5/9QgXzChlvSN/i37Gog3kWag==","signatures":[{"sig":"MEUCIFzMkFQM2eAIAP8tYnU3LRiHF0IXuq1pAhFZwr5gc+y+AiEAptPlg/vjJruWe0c+FeyyPmsb/4oUPKFBuWdDMhfDo58=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkHdIJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqC2RAAkcHuPrSJaGeL/EYJd30Fbn8+CLRMgxAzkqs6TETjU1W6CEfG\r\n5ZuGLViYS32sxCk4sFAzke2wnQN0w/UKLpP6LTRvH600CVsNYQ73Pf3OxPvH\r\npkURJKYa7dY5GKXwVgaxcHVXVH6i/RKSAO97t8cUliAcblA0uvYBxIXqwtjk\r\n5krgomH4+dmQqRzd07WJpgA19OrgStPMUHqg+61O2FapKChVSLoZQk5GF1NJ\r\n5qe5vLbFWBuscBb/D+8c1fs1Vc2EP5dAd1hhE5NNW5H9FDquwd1DHCcX6ISS\r\nmiZJEGTrw1ogzNc0m935ErvQ9rFi4AX9+t9N57WqT4DpuuYLjqGOYs9BTrtU\r\nMk6dn+JoOhQx0wxarwKAyIZXyGmfjlOeh0bqF8VUJEVXQGOsBcYRns8jDRxP\r\n2y8afcALhFthtmQmOXZEWJqloVU2elATbQ66I/y80aauMM1HSOpGk0er4nUJ\r\nLJX5KGzLDljtZWKSm7eR91cE+IFeXUBWq7UO9S+R2NJ0OShxZ8Qs4hQIgseC\r\nU2thc+7jsMTIn3xLWTPVNdWjB7dJ9w9ewpG3a+IGm3ZVE1wweJfs0B+5gdl5\r\nenhMyoMvLsaG2JA/UIM24V04Tg9FfhBGortMBYsMg+NtaynXU+qKKGRmMnbv\r\nKHkahRNbD0VgAL6u3GhIKERl/BlbNOAl6z0=\r\n=Hiy/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=10.0.0"},"gitHead":"cddb78e5fab3178c9956c72063aa26f418e710af","scripts":{"test":"npm run format:check && tsc && nyc mocha --require ts-node/register test/index.ts","prepack":"tsc","format:fix":"prettier --parser typescript --write 'lib/**/*.ts' 'test/**/*.ts'","format:check":"prettier --parser typescript --check 'lib/**/*.ts' 'test/**/*.ts'"},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"repository":{"url":"git+ssh://git@github.com/socketio/socket.io-cluster-adapter.git","type":"git"},"_npmVersion":"8.11.0","description":"The Socket.IO cluster adapter, allowing to broadcast events between several Socket.IO servers","directories":{},"_nodeVersion":"16.15.1","dependencies":{"debug":"~4.3.1"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"^15.1.0","mocha":"^10.0.0","ts-node":"^9.1.1","prettier":"^2.1.2","expect.js":"0.3.1","socket.io":"^4.6.1","typescript":"^4.0.5","@types/node":"^15.12.4","@types/mocha":"^10.0.0","@types/expect.js":"^0.3.29","socket.io-client":"^4.1.1"},"peerDependencies":{"socket.io-adapter":"^2.4.0"},"_npmOperationalInternal":{"tmp":"tmp/cluster-adapter_0.2.2_1679675912965_0.8608777550924436","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@socket.io/cluster-adapter","version":"0.3.0","description":"The Socket.IO cluster adapter, allowing to broadcast events between several Socket.IO servers","license":"MIT","homepage":"https://github.com/socketio/socket.io/tree/main/packages/socket.io-cluster-adapter#readme","repository":{"type":"git","url":"git+https://github.com/socketio/socket.io.git"},"bugs":{"url":"https://github.com/socketio/socket.io/issues"},"main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"compile":"rimraf ./dist && tsc","test":"npm run format:check && npm run compile && nyc mocha --import=tsx test/index.ts","format:check":"prettier --check \"lib/**/*.ts' \"test/**/*.ts\"","format:fix":"prettier --write \"lib/**/*.ts\" \"test/**/*.ts\"","prepack":"npm run compile"},"dependencies":{"debug":"~4.4.1"},"peerDependencies":{"socket.io-adapter":"~2.5.5"},"engines":{"node":">=10.0.0"},"keywords":["socket.io","cluster","adapter"],"_id":"@socket.io/cluster-adapter@0.3.0","gitHead":"47ff1cd04c44bced71b1bc45478b64311e6eede0","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-pHtPlQrKCWb1FE49nSaQSqB0xWYZ/OU8ONxWLWU79u6OA92/IHeHolVTcJfrsiK2Zvrh1yvMo3tVFKKjlKkKRQ==","shasum":"ddfba09ad9d1adc446e4e606ca0e410f24f77308","tarball":"https://registry.npmjs.org/@socket.io/cluster-adapter/-/cluster-adapter-0.3.0.tgz","fileCount":5,"unpackedSize":9973,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@socket.io%2fcluster-adapter@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/sjqrpeq1g/KsK9VUKdToHZgy7FSNtfBlB8QEKtrmcQIhAIR+eCQ5p8i57U6k3p5guT0JelYaUh3RJURRTSF4mA4A"}]},"_npmUser":{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"},"directories":{},"maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cluster-adapter_0.3.0_1760637580921_0.4586532452121519"},"_hasShrinkwrap":false}},"time":{"created":"2021-06-22T05:07:01.367Z","modified":"2025-10-16T17:59:41.545Z","0.1.0":"2021-06-22T05:07:01.594Z","0.2.0":"2022-04-28T14:16:42.988Z","0.2.1":"2022-10-13T07:24:09.535Z","0.2.2":"2023-03-24T16:38:33.156Z","0.3.0":"2025-10-16T17:59:41.095Z"},"bugs":{"url":"https://github.com/socketio/socket.io/issues"},"license":"MIT","homepage":"https://github.com/socketio/socket.io/tree/main/packages/socket.io-cluster-adapter#readme","keywords":["socket.io","cluster","adapter"],"repository":{"type":"git","url":"git+https://github.com/socketio/socket.io.git"},"description":"The Socket.IO cluster adapter, allowing to broadcast events between several Socket.IO servers","maintainers":[{"name":"darrachequesne","email":"damien.arrachequesne@gmail.com"}],"readme":"# Socket.IO cluster adapter\n\nThe `@socket.io/cluster-adapter` package allows broadcasting packets between multiple Socket.IO servers.\n\n![Adapter diagram](./assets/adapter.png)\n\nIt can be used in conjunction with [`@socket.io/sticky`](https://github.com/socketio/socket.io-sticky) to broadcast packets between the workers of the same Node.js [cluster](https://nodejs.org/api/cluster.html).\n\nSupported features:\n\n- [broadcasting](https://socket.io/docs/v4/broadcasting-events/)\n- [utility methods](https://socket.io/docs/v4/server-instance/#Utility-methods)\n  - [`socketsJoin`](https://socket.io/docs/v4/server-instance/#socketsJoin)\n  - [`socketsLeave`](https://socket.io/docs/v4/server-instance/#socketsLeave)\n  - [`disconnectSockets`](https://socket.io/docs/v4/server-instance/#disconnectSockets)\n  - [`fetchSockets`](https://socket.io/docs/v4/server-instance/#fetchSockets)\n  - [`serverSideEmit`](https://socket.io/docs/v4/server-instance/#serverSideEmit)\n\nRelated packages:\n\n- Postgres adapter: https://github.com/socketio/socket.io-postgres-adapter/\n- Redis adapter: https://github.com/socketio/socket.io-redis-adapter/\n- MongoDB adapter: https://github.com/socketio/socket.io-mongo-adapter/\n\n**Table of contents**\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [License](#license)\n\n## Installation\n\n```\nnpm install @socket.io/cluster-adapter\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  // setup sticky sessions\n  setupMaster(httpServer, {\n    loadBalancingMethod: \"least-connection\",\n  });\n\n  // setup connections between the workers\n  setupPrimary();\n\n  // needed for packets containing buffers (you can ignore it if you only send plaintext objects)\n  // Node.js < 16.0.0\n  cluster.setupMaster({\n    serialization: \"advanced\",\n  });\n  // Node.js > 16.0.0\n  // cluster.setupPrimary({\n  //   serialization: \"advanced\",\n  // });\n\n  httpServer.listen(3000);\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\n  // use the cluster adapter\n  io.adapter(createAdapter());\n\n  // setup connection with the primary process\n  setupWorker(io);\n\n  io.on(\"connection\", (socket) => {\n    /* ... */\n  });\n}\n```\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}