ルームクライアントの1つが切断されたときに、サーバーがすべてのルームクライアントにメッセージを送信するようにします。
このようなもの:
socket.on('disconnect', function() {
server.sockets.in(room).emit('bye');
});
だが...
- どの部屋を放送するかをどうやって知ることができますか?
- クライアントが複数の部屋に参加している場合はどうなりますか?
ルームクライアントの1つが切断されたときに、サーバーがすべてのルームクライアントにメッセージを送信するようにします。
このようなもの:
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!');
}
とにかく試してみる価値があります-これがうまくいかない場合は、同様のことがうまくいくと確信しています。