当客户端断开连接时如何将消息发送到房间客户端

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

像这样的东西:

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

但…

  • 我怎么知道哪个房间可以播放?
  • 如果客户join了多个房间呢?

在检查套接字对象之后,我想出了这个解决scheme:

 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'); } } }); 

不是100%在这 – 但试试看:

当连接到一个房间或添加一个新的用户混合,请记住他们的用户名或ID或在sockets中的东西:

 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!'); } 

无论如何,这是值得一试的 – 我敢肯定,如果不这样做,类似的东西也会起作用。