2016-09-30 5 views
2

ここに私のコードサンプルがあります。シングルソケットエミットを使って同じユーザーに複数のソケットレスポンスを取得しています。場合によっては、サーバーが再起動するたびに+1増加分だけ増加することもあります。socket.ioのすべてのsocket.emitで複数のソケットレスポンスを取得

....  
socket.emit('groupmessage', { 
             username: sender_id, 
             server_chat_id:chat_id, 
             user_message:"ownmessage", 
             server_time:server_time, 
             message: new_message, 
             action: "ownmessage", 
             temp: 'new' 
         }); 
.... 

答えて

0

そのごsocket.on(event, listener)は、(同じイベントのために)複数 回実行されているため。

ここには参考になるものがあります。

ABOUT:ソケット経由レスポンスがイベントに添付リスナーに収容されています。問題の

// Initialize socket 
socket = IO.socket(SERVER_URL); 

// Turn on event 
socket.on(event, listener); 
// connect the socket 
socket.connect(); 

// emit data 
socket.emit(event, "data"); 

// disconnect socket 
mSocket.disconnect(); 
// Turn Events Off 
socket.off(event, listener); 

理由:同じリスナーのイベントが追加され、複数のインスタンスは、アクションは、同じ回数行われます。

原因:複数のリスナーの添加は

  1. 依然として同じイベントを有する、まだ生きている接続されたソケットへの参照を保持している前回の活動の結果として生じ得ます。
  2. socket.on(event, listener)socket.off(event, listener)の間の同期をアンフォローするアクティビティコールバックでのソケットの不適切な処理。

SOLUTION:イベントのリスナーON

  1. 電源を入れCONNECTonResume()ソケット。

  2. DISCONNECTソケットとターンonPause()でOFFリスナー

関連する問題