我在socketio wiki上看过这个。
请注意,在调用期间无需调用socket.leave() 断开事件。这将自动发生。空房间会 自动修剪,因此无需手动删除它们。
但经过一些测试后,它无法正常工作。断开连接后(服务器端或客户端),套接字不会从他的房间中删除。所以我的问题是,之前的文本是否仍然相关?因为我的代码中有问题或维基未更新。
我已经尝试检查socketio代码内部以检查这一点,但我无法跟踪代码以查看会发生什么。
如果文字仍然相关,那么在我们放入开启('断开连接的')事件的代码之后或之前,房间何时离开?
谢谢。
答案 0 :(得分:1)
您可以随时删除包含套接字的socket.namespace.manager.rooms
下的条目。
socket.join(socket.id);
console.log(socket.namespace.manager.rooms['/'+socket.id]);
socket.namespace.manager.rooms["/"+socket.id].splice(socket.namespace.manager.rooms["/"+socket.id].indexOf(socket.id),1);
console.log(socket.namespace.manager.rooms['/'+socket.id]);
返回
[ '36_IcxqkWgBgLfC6p3Yj' ]
[]