如何在Node.js中保留套接字连接的所有房间

See*_*ker 15 websocket node.js socket.io

我有一些代码,其中一个套接字加入多个房间.在代码中的某个时刻,我想一次性离开所有房间,而不必断开插座.是否有可能做到这一点?如果是,那我该怎么做?提前致谢..

alm*_*pal 7

那是可能的.您可以在不断开插座的情况下离开房间.只有在调用socket.disconnect()时套接字才会断开连接.

为此,您必须维护每个客户端加入和离开的房间列表.要离开所有房间遍历此列表并调用socket.leave(roomname);

  • 您不需要维护房间列表,socket.io会为您执行此操作.只需遍历`io.sockets.manager.roomClients [socket.id]`和`socket.leave`那些键即可. (9认同)
  • socket.leaveAll() (6认同)
  • @Druska`io.socket.adapter.sids [socket.id]`是更新的房间.下面的代码留下套接字的所有房间.`var rooms = io.sockets.adapter.sids [socket.id]; for(房间里的房间){socket.leave(room); }` (4认同)
  • 对于单个套接字,其为“socket.rooms”。 (3认同)