套接字断开的Socket.io

时间:2011-12-15 08:38:25

标签: node.js socket.io

我在socket.io中有这个场景:

套接字连接并加入一个房间,他就是主人。其他插座加入他的房间。当主人断开连接时,我想从这个房间踢出所有其他插座。

我想到了这个:

socket.on('disconnect', function(data){
    // if socket's id == room  he is the master and kick other sockets from this 
    // room and join them to a room of their own identified by their ids.       
});

我想在没有太多逻辑的情况下执行此操作,并且循环停止应用程序。有可能像io.sockets.leave(socket.room)这样的东西吗?

2 个答案:

答案 0 :(得分:5)

alessioalex的答案返回错误,因为它试图在一组套接字上调用“leave”。这是一个有效的解决方案:

io.sockets.clients(socket.room).forEach(function(listener) {
    listener.leave(socket.room);
});

答案 1 :(得分:4)

我不是百分百肯定,但在github上阅读Socket.IO's documentation后我认为这应该有效:

io.sockets.in(socket.room).leave(socket.room);