当客户端断开连接时如何将消息发送到房间客户端
我希望服务器在其中一个断开连接时向所有会议室客户端发送消息。
像这样的东西:
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!'); }
无论如何,这是值得一试的 – 我敢肯定,如果不这样做,类似的东西也会起作用。