2017-03-07 5 views

答えて

2

このためには、サーバー側のライブWebソケット接続オブジェクトのリストを最初に維持する必要があります。ユーザがブラウザを閉じるなどしてWebソケットから切断すると、ユーザのWebソケット接続オブジェクトをリストから削除する必要があります。

サーバーサイドコード。これを処理するには、次のコードでメンバ配列を参照できます。

io.on("connection",function(client) 
{ 
    client.on("join",function(data) 
    { 
    members[membercount] = client; 
    membername[membercount] = data; 
    membercount++; 
    for(var i =0 ;i <members.length;i++) 
    { 
     members[i].emit("message",membername); 
    } 
    }); 
    client.on("messages",function(data) 
    { 
    for(var i =0 ;i <members.length;i++) 
    { 
     if(members[i].id !== client.id) 
     { 
     members[i].emit("message",data); 
     } 
    } 
    }); 
    client.on("disconnect",function(data) 
    { 
    for(var i =0;i<members.length;i++) 
    { 
     if(members[i].id === client.id) 
     { 
     membercount--; 
     members.splice(i,1); 
     membername.splice(i,1); 
     } 
    } 
    for(var i =0 ;i <members.length;i++) 
    { 
     members[i].emit("message",membername); 
    } 
    }); 
}); 

希望があればこんにちは!!!!!

+0

クライアントがうまく切断しない場合はどうなりますか?ハートビートが失敗するか何か?まだ切断されていますか?ありがとう! – Bren

+0

Webソケットであるため、ノードjsフレームワークは開いているWebソケット接続を待ち受けます。ブラウザが終了すると、切断コールバックメソッドが通知されます。クローズされたインスタンスを削除することによって切断を管理する必要があります。あなたのためにこの仕事が欲しい!!!!!!! –

関連する問題