6

我希望服务器在其中一个断开连接时向所有房间客户端发送消息。

像这样的东西:

socket.on('disconnect', function() {
    server.sockets.in(room).emit('bye');
});

但...

  • 我怎么知道要广播哪个房间?
  • 如果客户加入了多个房间怎么办?
4

2 回答 2

3

检查套接字对象后,我想出了这个解决方案:

socket.on('disconnect', function() {
    var rooms = io.sockets.manager.roomClients[socket.id];
    for (var room in rooms) {
        if (room.length > 0) { // if not the global room ''
            room = room.substr(1); // remove leading '/'
            console.log('user exits: '+room);
            server.sockets.in(room).emit('bye');
        }
    }
});
于 2012-12-04T16:30:14.410 回答
0

不是 100% - 但试一试:

当连接到房间或添加新用户时,请记住他们的用户名或 ID 或套接字中的其他内容:

socket.on('adduser', function(username){
    socket.username = username;
    socket.join('room');
}

然后听离开房间的事件:

socket.room.on('leave', function(){
    socket.broadcast.to(this).emit(socket.username + ' says seeya!');
}

无论如何都值得一试——我敢肯定,如果没有,类似的东西会起作用。

于 2013-05-15T20:57:37.813 回答