2017-08-11 18 views
0

socket.io & nodejsを新しく追加しました。私はtictactoeのゲームを書いている、私はそれに問題がある、私の目的は、誰かがページをリフレッシュするか、ブラウザを閉じると彼/彼女の相手に知らせている場合です。私は切断イベントでこれを行う必要があり、ここで私が試しているものですが、それは動作していないことを知っています。socket.ioでユーザーの切断をブロードキャストできません

サーバ側

socket.on('disconnect', function() { 
    socket.emit('user:disconnect'); 
}); 

クライアント側

socket.on('user:disconnect', function() { 
    var message = player.getPlayerName() + ' leaves'; 
    socket.emit('gameEnded', {room: this.getRoomId(), message: message,id:player.getPlayerId(),gameid: this.getGameId(),winType:"leave"}); 
}); 

も、私は、切断されたユーザの部屋を取得する方法を知っておく必要があります。 私は既にthisを見ましたが、アプリケーション内のすべてのユーザーではない部屋にユーザーを送りたいだけです。

+0

可能な複製(https://stackoverflow.com/questions/10058226/send-response-to-all-clients-except-sender) – mdziekon

答えて

0

server.js上記のコードで

socket.on('disconnect', function() { 
    socket.emit('user:disconnect'); 
}); 

「XXX」という名前のユーザは、サーバが「ユーザ:切断」放出され、切断された場合、同じユーザーにします。他のプレーヤーのソケット接続を見つけて、そのクライアントにイベントを送信する必要があります。

部屋の両方のクライアントに参加して部屋の他のユーザーにメッセージを送信することで、目標を達成できます。

socket.join('room1'); 

io.sockets.in('room1').emit('user:disconnect'); 

それ以外の場合は、以下のようにすべてのクライアントを保存し、次のコードを使用して特定のクライアントにメッセージを送信する必要があります。

var users = { 
    'client1': [socket object], 
    'client2': [socket object], 
    'client3': [socket object] 
} 

users['client3'].emit('user:disconnect') 
[送信者を除くすべてのクライアントに応答を送信]の
関連する問題