[英]How to listen for Room events
为了明确起见,我知道客户端应该向服务器发送诸如“ join-room”之类的消息以进行处理,这很好,并且我知道我可以对“ leave-room”执行相同的操作。
我想要的是实际监听事件本身,因为如果客户断开连接,我需要向受影响的房间发送消息,因为当客户断开连接时,他们会自动离开所有房间。
所以我想要类似的东西;
socket.on('join' function() {
// send message
});
socket.on('leave' function() {
// send message
});
这样,如果用户关闭窗口(这将断开客户端的连接,然后触发所有房间离开),我可以发送一条消息。
我正在使用最新的socket.io和redis适配器。
也;
列出特定套接字所在的所有房间的最有效方法是什么,因为从技术上讲,我认为断开事件应包含client_id,因此我可以手动执行此操作。
关键是清晰度和稳定性,尽管我愿意接受其他方法(必须仍然使用socket.io)。
谢谢
因此,如果我正确理解了您的主要问题:您想监听实现本身中加入和离开房间的事件,以使socket.join(room_id)
应该触发您想监听的事件。
问题是文档没有提及监听该事件的任何方法。 实际上, 实现本身未显示加入会议室时触发事件的迹象。 我的猜测是,您将必须实现join_room/leave_room
系统来进行处理。
至于子问题,套接字对象包含一个称为rooms
的数组,因此socket.rooms
包含套接字当前位于的所有房间。
这可能是您要寻找的:
socket.on('disconnect', function() { for(var room in socket.rooms) { //do stuff before the client close the connection and leave the rooms } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.