每个套接字都有一个内部循环:
if (!chat.room.list[hash]) { // room has expired
socket.leave(hash);
delete chat.user.list[socket.store.data.id].rooms[hash];
delete socket.store.data.inRooms[hash]; // delete room hash from user store
}
Run Code Online (Sandbox Code Playgroud)
socket.leave(hash)什么都不做-套接字仍然接收发送到hash房间的消息。
附带说明-如果我与客户端Anna和客户端Bob相连-都接收消息,但是如果我与客户端Bob重新连接-Bob无法将消息发送给Anna。
在某处有完整的套接字io API文档(因为我找不到socket.leave(room)示例)?
编辑:知道了!套接字IO使用斜杠节省了房间句柄,因此您必须使用socket.leave('/'+hash)