在socket.disconnect()后手动离开房间

时间:2014-05-07 13:45:07

标签: socket.io

我在socketio wiki上看过这个。

  

请注意,在调用期间无需调用socket.leave()   断开事件。这将自动发生。空房间会   自动修剪,因此无需手动删除它们。

但经过一些测试后,它无法正常工作。断开连接后(服务器端或客户端),套接字不会从他的房间中删除。所以我的问题是,之前的文本是否仍然相关?因为我的代码中有问题或维基未更新。

我已经尝试检查socketio代码内部以检查这一点,但我无法跟踪代码以查看会发生什么。

如果文字仍然相关,那么在我们放入开启('断开连接的')事件的代码之后或之前,房间何时离开?

谢谢。

1 个答案:

答案 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' ]
[]