socket.io-redis-adapter: Error: timeout reached while waiting for sockets response

socket.io@3.0.3 socket.io-redis@6.0.1

Calls made to the adapter methods as follows: ` const sockets = await io.of(‘/’).adapter.sockets(); console.log(sockets); // a Set containing all the connected socket ids

// this method is also exposed by the Server instance const sockets = io.in(‘room3’).allSockets(); console.log(sockets); // a Set containing the socket ids in ‘room3’ `

Causes the below exception being thrown: (node:20818) UnhandledPromiseRejectionWarning: Error: timeout reached while waiting for sockets response at Timeout._onTimeout (/var/app/node_modules/socket.io-redis/dist/index.js:286:28) at listOnTimeout (internal/timers.js:549:17) at processTimers (internal/timers.js:492:7) (node:20818) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag–unhandled-rejections=strict(see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)

About this issue

  • Original URL
  • State: open
  • Created 4 years ago
  • Reactions: 12
  • Comments: 15 (1 by maintainers)

Most upvoted comments

seems to happen when numSub and msgCount are off by 1

{ type: 5, numSub: 3, resolve: [Function (anonymous)], timeout: Timeout { _idleTimeout: 5000, _idlePrev: [TimersList], _idleNext: [Timeout], _idleStart: 5650, _onTimeout: [Function (anonymous)], _timerArgs: undefined, _repeat: null, _destroyed: false, [Symbol(refed)]: true, [Symbol(kHasPrimitive)]: false, [Symbol(asyncId)]: 391, [Symbol(triggerId)]: 0 }, msgCount: 2, sockets: [] }

I am seeing this issue as well intermittently

Happening to me too.

Using ioredis for connection and fetchSockets instead of allSockets due to the deprecation of allSockets sice socket.io@4.5.3, but the result is the same.

Error: timeout reached while waiting for fetchSockets response
    at Timeout._onTimeout (/node_modules/@socket.io/redis-adapter/dist/index.js:559:28)
    at listOnTimeout (node:internal/timers:569:17)
    at process.processTimers (node:internal/timers:512:7)

Same error here. Looking at the lib seems like the error is generated on this line: https://github.com/socketio/socket.io-redis-adapter/blob/ef5f0da0b4928fd422afc985aec0e233d34400c0/lib/index.ts#L759

@darrachequesne Can you help us? What is the logic of this if that generates the error?

    if (this.requests.has(requestId)) {
      reject(
        new Error("timeout reached while waiting for fetchSockets response")
      );
      this.requests.delete(requestId);
    }

same error