如何在客户端断开连接时向客户端客户端发送消息

时间:2012-12-03 12:45:24

标签: javascript node.js socket.io

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

这样的事情:

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

但是...

  • 我如何知道要播放哪个房间?
  • 如果客户已加入多个房间怎么办?

2 个答案:

答案 0 :(得分: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');
        }
    }
});

答案 1 :(得分: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!');
}

无论如何值得一试 - 如果不这样的话,我相信类似的东西会起作用。