2016-04-20 16 views
1

私はnodejsとsocket.ioのマルチルームチャットシステムに取り組んでいます。トリガは、このイベントは、それが二回発生するたびにソケットイベントが2回発生する

は、ここに私のサーバー側のスクリプト

socket.on('sendchat', function (data) { 

    socket.username = data.name; 
    // store the room name in the socket session for this client 
    socket.room = data.room; 
    // add the client's username to the global list 
    usernames[data.name] = data.name; 
    // send client to room 
    socket.join(data.room); 

    // we tell the client to execute 'updatechat' with 2 parameters 
    io.sockets.in(data.room).emit('updatechat',data.name, data); 
}); 

とクライアント側

socket.on('updatechat', function (username, data) { 
    var html = '<div class="media">'+ 
       '<div class="media-left"> '+ 
        '<a href="#"> '+ 
         '<img class="media-object img-circle" data-src="holder.js/64x64" alt="64x64" '+ 
         'src="assets/images/profile/'+data.img+'" data-holder-rendered="true" style="width: 64px; height: 64px;">'+ 
          '</a>'+ 
          '</div>'+ 
          '<div class="media-body">'+ 
          '<h4 class="media-heading">'+data.name+'</h4> <p>'+data.message+'</p><a class="chat-time">'+ 
          '<i class="glyphicon glyphicon-time"></i>'+moment().format('MMMM Do YYYY, h:mm:ss a')+'</a></div>'+ 
          '</div>';     

    $("#dash_threads").html(html); }); 

です。私はすべての可能な解決策をチェックしましたが、それはうまくいきませんでした。私が間違っているところで誰でも私を導くことができますか?

答えて

0

実際これは2つの理由によるものです。

1)アイドル接続後のソケット接続の再開 2)ソケットファイルを2回インクルードします。

最初に接続が発生したかどうかを確認するために、ブール値を追加することで解決できます。初めてイベントリスナーをソケットに追加する場合は、それを確認してください。

client.isFirstTime = false; 
socket.on('connect',function(){ 
if (!client.isFirstTime){ 
     // add event listeners 
} 
}); 
関連する問題