4

我正在尝试在 NodeJs 中使用Redis 适配器实现socket.io 。

大多数情况下它可以工作,但有时我在尝试断开/连接套接字时仍然会出错,所以我认为我没有正确实现它。

socket.disconnect();有人可以解释一下和之间有什么区别吗 io.of('/').adapter.remoteDisconnect();

如果我用以下方式初始化我的 io:

io.adapter(redisIO({
   host: config.server.redis.host,
   port: config.server.redis.port,
   requestsTimeout: config.server.redis.request_timeout
}));

那么不socket.disconnect();应该知道使用redisIO吗?如果使用remoteDisconnect我仍然可以捕获socket.on('disconnect', fn)还是应该remoteDisconnect被调用socket.on('disconnect', fn)

如果客户端断开连接会发生什么?如何将它传播到 socket.io 集群?

任何工作示例将不胜感激:)

谢谢!

4

1 回答 1

0

捕获socket事件disconnecting,不行disconnect,到时候就太晚了!

socket.on('disconnecting', () => {
  var room_name = sess.id
  io.of('/').adapter.remoteDisconnect(room_name, true, err => {
     delete socket.rooms[room_name]
     socket.removeAllListeners()
  })
})

于 2019-10-04T04:05:11.710 回答