我有一个针对每个套接字的内部循环:
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
}
socket.leave(hash)
无效 - socket仍会接收发送到hash
房间的消息。
顺便提一下 - 如果我连接了客户端Anna和客户端Bob,则两者都会收到消息,但如果我重新连接客户端Bob,则Bob无法向Anna发送消息。
是否有完整的socket io API文档(因为我找不到socket.leave(room)的示例)?
编辑:
明白了! Socket IO使用斜杠保存房间句柄,因此您必须使用socket.leave('/'+hash)
。