繁体   English   中英

如何收听房间事件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM