我希望服务器在其中一个断开连接时向所有房间客户端发送消息。
像这样的东西:
socket.on('disconnect', function() {
server.sockets.in(room).emit('bye');
});
但...
- 我怎么知道要广播哪个房间?
- 如果客户加入了多个房间怎么办?
我希望服务器在其中一个断开连接时向所有房间客户端发送消息。
像这样的东西:
socket.on('disconnect', function() {
server.sockets.in(room).emit('bye');
});
但...
检查套接字对象后,我想出了这个解决方案:
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 或套接字中的其他内容:
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!');
}
无论如何都值得一试——我敢肯定,如果没有,类似的东西会起作用。