如何在Socket.IO中一次性离开套接字连接的所有房间[关闭]
Posted
技术标签:
【中文标题】如何在Socket.IO中一次性离开套接字连接的所有房间[关闭]【英文标题】:How to leave all rooms that the socket is connected to at one go in Socket.IO [closed] 【发布时间】:2012-06-09 09:20:25 【问题描述】:我有一些代码用来连接多个房间。在代码中的某个时刻,我想一次离开所有房间,而不断开插座。是否有可能做到这一点?如果是,那么我该怎么做?提前谢谢..
我正在使用 socket.IO
【问题讨论】:
@Poelinca Dorin 请重新打开 【参考方案1】:这是可能的。您可以在不断开插座的情况下离开房间。仅当您调用 socket.disconnect() 时,套接字才会断开连接。
为此,您必须维护每个客户加入和离开的房间列表。要离开所有房间,请遍历此列表并调用 socket.leave(roomname);
【讨论】:
那真是太棒了.. 当我试图离开一个套接字未早先加入的房间时,是否有可能出现异常? 我所指的版本 0.8.7 仅考虑套接字离开现有房间的情况。如果房间不存在,则什么都不做,甚至没有例外。 您不需要维护房间列表,socket.io 会为您完成。只需遍历io.sockets.manager.roomClients[socket.id]
和socket.leave
的键即可。
对于单个套接字,其socket.rooms
。
@Druska io.sockets.adapter.sids[socket.id]
是查找房间的更新版本。下面的代码离开插座的所有房间。 var rooms = io.sockets.adapter.sids[socket.id]; for(var room in rooms) socket.leave(room);
以上是关于如何在Socket.IO中一次性离开套接字连接的所有房间[关闭]的主要内容,如果未能解决你的问题,请参考以下文章