{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":17412319,"defaultBranch":"main","name":"socket.io-redis-adapter","ownerLogin":"socketio","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2014-03-04T18:30:01.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/10566080?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1710489416.0","currentOid":""},"activityList":{"items":[{"before":"5c5e499d4ef0b4ca9267c0354b0bd00878f19155","after":null,"ref":"refs/heads/test/server-close","pushedAt":"2024-03-15T07:56:56.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"5e82a3bff601f0d59f0ef3e80e338a0471115571","after":"cdb55353f83c78cabe9788683e4dd93ac4cd50c9","ref":"refs/heads/main","pushedAt":"2024-03-15T07:56:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"test: adapter.close() is now called by io.close()\n\nRelated: https://github.com/socketio/socket.io/commit/bf64870957e626a73e0544716a1a41a4ba5093bb","shortMessageHtmlLink":"test: adapter.close() is now called by io.close()"}},{"before":null,"after":"5c5e499d4ef0b4ca9267c0354b0bd00878f19155","ref":"refs/heads/test/server-close","pushedAt":"2024-03-15T07:52:44.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"test: adapter.close() is now called by io.close()","shortMessageHtmlLink":"test: adapter.close() is now called by io.close()"}},{"before":"538717630a659f838ee88fc8d64bed30460080a0","after":null,"ref":"refs/heads/docs/rework-readme","pushedAt":"2024-03-13T14:39:45.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"50220f49cd73047e9f70afcb18c9ac62c716bd3d","after":"5e82a3bff601f0d59f0ef3e80e338a0471115571","ref":"refs/heads/main","pushedAt":"2024-03-13T14:39:21.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"chore(release): 8.3.0\n\nDiff: https://github.com/socketio/socket.io-redis-adapter/compare/8.2.1...8.3.0","shortMessageHtmlLink":"chore(release): 8.3.0"}},{"before":"111ef46057582fa525ceb9f631225fae0b67c215","after":"538717630a659f838ee88fc8d64bed30460080a0","ref":"refs/heads/docs/rework-readme","pushedAt":"2024-03-13T14:30:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"docs: rework of the README","shortMessageHtmlLink":"docs: rework of the README"}},{"before":null,"after":"111ef46057582fa525ceb9f631225fae0b67c215","ref":"refs/heads/docs/rework-readme","pushedAt":"2024-03-13T14:19:33.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"docs: rework of the README","shortMessageHtmlLink":"docs: rework of the README"}},{"before":"dc1407f4e473dda29492bb6169dacef5e1ba4762","after":"50220f49cd73047e9f70afcb18c9ac62c716bd3d","ref":"refs/heads/main","pushedAt":"2024-03-13T13:43:11.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"feat(sharded): add an option for dynamic private channels (#526)\n\nRelated: https://github.com/socketio/socket.io-redis-adapter/issues/524","shortMessageHtmlLink":"feat(sharded): add an option for dynamic private channels (#526)"}},{"before":"dc1407f4e473dda29492bb6169dacef5e1ba4762","after":null,"ref":"refs/heads/ci/node20","pushedAt":"2024-03-13T11:02:30.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"7fb6b90baf721c0b89ece93265a3cbe7ca0a7fd0","after":"dc1407f4e473dda29492bb6169dacef5e1ba4762","ref":"refs/heads/main","pushedAt":"2024-03-13T11:02:21.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"chore: cleanup dist folder before running tsc","shortMessageHtmlLink":"chore: cleanup dist folder before running tsc"}},{"before":"ff2323b59219b5abe66a0159bf2496a33d2571a3","after":null,"ref":"refs/heads/refactor/cluster-adapter","pushedAt":"2024-03-13T10:58:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":null,"after":"dc1407f4e473dda29492bb6169dacef5e1ba4762","ref":"refs/heads/ci/node20","pushedAt":"2024-03-13T10:58:09.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"chore: cleanup dist folder before running tsc","shortMessageHtmlLink":"chore: cleanup dist folder before running tsc"}},{"before":"740e6ebd01b624966c3610c3666b72af299b00d4","after":"7fb6b90baf721c0b89ece93265a3cbe7ca0a7fd0","ref":"refs/heads/main","pushedAt":"2024-03-13T10:52:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"refactor: use the ClusterAdapter class from socket.io-adapter package\n\nThe ClusterAdapter class has been moved to [1], so that this adapter\nonly needs to implement to pub/sub mechanism.\n\nAlso, [2] should reduce the number of \"timeout reached: only x\nresponses received out of y\" errors, since the fetchSockets() requests\nwill now succeed even if a server leaves the cluster.\n\n[1]: https://github.com/socketio/socket.io-adapter\n[2]: https://github.com/socketio/socket.io-adapter/commit/0e23ff0cc671e3186510f7cfb8a4c1147457296f\n\nSee also: https://github.com/socketio/socket.io-adapter/compare/2.5.2...2.5.4","shortMessageHtmlLink":"refactor: use the ClusterAdapter class from socket.io-adapter package"}},{"before":null,"after":"ff2323b59219b5abe66a0159bf2496a33d2571a3","ref":"refs/heads/refactor/cluster-adapter","pushedAt":"2024-03-13T10:44:23.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"refactor: use the ClusterAdapter class from socket.io-adapter package","shortMessageHtmlLink":"refactor: use the ClusterAdapter class from socket.io-adapter package"}},{"before":"e6d7ff2deb32865d60ceec441664327eb28399d1","after":null,"ref":"refs/heads/fix/sharded-unsub","pushedAt":"2024-03-13T10:30:10.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"cca38dc24d0b5dd797c440b58795314cbeaf89f0","after":"740e6ebd01b624966c3610c3666b72af299b00d4","ref":"refs/heads/main","pushedAt":"2024-03-13T10:20:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"docs: update compatibility table (#530)\n\nRelated: https://github.com/socketio/socket.io-redis-adapter/issues/424","shortMessageHtmlLink":"docs: update compatibility table (#530)"}},{"before":"2113e8d9eff9e13f9bbd9b603b93f42de512eb44","after":"cca38dc24d0b5dd797c440b58795314cbeaf89f0","ref":"refs/heads/main","pushedAt":"2024-03-13T10:16:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"fix(sharded): allow to target a specific socket ID in dynamic mode (#525)\n\nRelated: https://github.com/socketio/socket.io-redis-adapter/issues/524","shortMessageHtmlLink":"fix(sharded): allow to target a specific socket ID in dynamic mode (#525"}},{"before":"bd32763043a2eb79a21dffd8820f20e598348adf","after":"2113e8d9eff9e13f9bbd9b603b93f42de512eb44","ref":"refs/heads/main","pushedAt":"2024-03-13T09:50:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"fix(sharded): fix SSUBSCRIBE memory leak with ioredis (#529)\n\nThis pull request introduces a change to the sharded adapter's `SSUBSCRIBE` logic: Previously, for each dynamic channel/room, a unique listener was added to the client's `smessageBuffer`. This approach led to a large number of listeners (resulting in `MaxListenersExceededWarning`), especially in scenarios with many dynamic channels. Further, listeners were not being removed when unsubscribing, leading to a memory leak.\r\n\r\nThe new implementation replaces the multiple listeners with a single `smessageBuffer` listener. This listener is registered once and handles all dynamic channels by maintaining specific channel handlers in a `Map`. Listeners are added to this `Map` in `SSUBSCRIBE` and removed from the `Map` in `SUNSUBSCRIBE`.\r\n\r\nRelated: https://github.com/socketio/socket.io-redis-adapter/issues/528","shortMessageHtmlLink":"fix(sharded): fix SSUBSCRIBE memory leak with ioredis (#529)"}},{"before":"ef5f0da0b4928fd422afc985aec0e233d34400c0","after":"bd32763043a2eb79a21dffd8820f20e598348adf","ref":"refs/heads/main","pushedAt":"2024-02-19T08:11:00.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"fix(sharded): fix count in fetchSockets() method (#523)\n\nIf `fetchSockets()` is called shortly after the adapter was\r\ninitialized, the server count may still return 0, causing this to fail\r\nwith \"timeout reached: only 0 responses received out of -1\".","shortMessageHtmlLink":"fix(sharded): fix count in fetchSockets() method (#523)"}},{"before":null,"after":"881da7713d9f4dcb2ff88b69fd7d57559e26e65c","ref":"refs/heads/dependabot/npm_and_yarn/babel/traverse-7.23.2","pushedAt":"2023-10-17T01:07:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"chore: bump @babel/traverse from 7.12.5 to 7.23.2\n\nBumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.12.5 to 7.23.2.\n- [Release notes](https://github.com/babel/babel/releases)\n- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)\n\n---\nupdated-dependencies:\n- dependency-name: \"@babel/traverse\"\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"chore: bump @babel/traverse from 7.12.5 to 7.23.2"}},{"before":"92118c19fe4039612ac2ac7a6c1fb6c4e3664015","after":null,"ref":"refs/heads/dependabot/npm_and_yarn/socket.io-parser-4.2.3","pushedAt":"2023-05-24T12:58:44.160Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"623593dfe0d82fa6b1b1fbf9db932990d9b84b57","after":"ef5f0da0b4928fd422afc985aec0e233d34400c0","ref":"refs/heads/main","pushedAt":"2023-05-24T12:58:41.094Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"chore: bump socket.io-parser from 4.2.2 to 4.2.3 (#503)\n\nBumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.2 to 4.2.3.\r\n- [Release notes](https://github.com/socketio/socket.io-parser/releases)\r\n- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)\r\n- [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.2...4.2.3)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: socket.io-parser\r\n dependency-type: indirect\r\n...\r\n\r\nSigned-off-by: dependabot[bot] \r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>","shortMessageHtmlLink":"chore: bump socket.io-parser from 4.2.2 to 4.2.3 (#503)"}},{"before":null,"after":"92118c19fe4039612ac2ac7a6c1fb6c4e3664015","ref":"refs/heads/dependabot/npm_and_yarn/socket.io-parser-4.2.3","pushedAt":"2023-05-23T23:28:52.604Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"dependabot[bot]","name":null,"path":"/apps/dependabot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/29110?s=80&v=4"},"commit":{"message":"chore: bump socket.io-parser from 4.2.2 to 4.2.3\n\nBumps [socket.io-parser](https://github.com/socketio/socket.io-parser) from 4.2.2 to 4.2.3.\n- [Release notes](https://github.com/socketio/socket.io-parser/releases)\n- [Changelog](https://github.com/socketio/socket.io-parser/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/socketio/socket.io-parser/compare/4.2.2...4.2.3)\n\n---\nupdated-dependencies:\n- dependency-name: socket.io-parser\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] ","shortMessageHtmlLink":"chore: bump socket.io-parser from 4.2.2 to 4.2.3"}},{"before":"42c8ab6764a3d4c855b27eea35b4e0cda9c34b37","after":"623593dfe0d82fa6b1b1fbf9db932990d9b84b57","ref":"refs/heads/main","pushedAt":"2023-05-14T21:20:44.065Z","pushType":"push","commitsCount":3,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"chore(release): 8.2.1\n\nDiff: https://github.com/socketio/socket.io-redis-adapter/compare/8.2.0...8.2.1","shortMessageHtmlLink":"chore(release): 8.2.1"}},{"before":"1b367ed47a64700a8172aa02a480403cdcc45b0f","after":"e6d7ff2deb32865d60ceec441664327eb28399d1","ref":"refs/heads/fix/sharded-unsub","pushedAt":"2023-05-14T21:05:41.774Z","pushType":"push","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"fix command","shortMessageHtmlLink":"fix command"}},{"before":"a615b769442a44c22510418f30693b1bc41051cb","after":"1b367ed47a64700a8172aa02a480403cdcc45b0f","ref":"refs/heads/fix/sharded-unsub","pushedAt":"2023-05-14T21:01:23.681Z","pushType":"push","commitsCount":1,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"refactor: reuse same PUBSUB method","shortMessageHtmlLink":"refactor: reuse same PUBSUB method"}},{"before":null,"after":"a615b769442a44c22510418f30693b1bc41051cb","ref":"refs/heads/fix/sharded-unsub","pushedAt":"2023-05-13T06:45:08.747Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"},"commit":{"message":"fix(sharded): properly unsubscribe\n\nProviding an array of channels to the SUNSUBSCRIBE command assumes all\nthe channels are allocated to the same slot, which is not always the\ncase, so we need to issue one command per channel.","shortMessageHtmlLink":"fix(sharded): properly unsubscribe"}},{"before":"fbe21fda88be57db8ae50dcf7797924fef990077","after":null,"ref":"refs/heads/fix/sharded-ioredis","pushedAt":"2023-05-13T06:28:21.224Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"ae7caf95fa305d06c816912c8d594bea89ad7053","after":null,"ref":"refs/heads/test/fix-test","pushedAt":"2023-05-13T06:28:19.972Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}},{"before":"226c84d7bea7af6f8a173505396c470298b43555","after":null,"ref":"refs/heads/test/redis-cluster","pushedAt":"2023-05-13T06:28:18.656Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"darrachequesne","name":"Damien Arrachequesne","path":"/darrachequesne","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/13031701?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEFm1P_wA","startCursor":null,"endCursor":null}},"title":"Activity ยท socketio/socket.io-redis-adapter"}