2012-03-30 16 views
1

now.jsグループを使用していて、ユーザーがグループを離れるときにリッスンして、グループが空であれば整理を行うことができます。私は、休暇イベントは、ユーザーがグループに入っているたびに複数回呼び出されます。つまり、グループに参加して3回目のブラウザで3回閉じると3回呼び出されます。nowjsグループ複数回呼び出されるイベントを残す

chatserver.prototype.joinGroup = function(groupId) { 
    //user joins group 
    var group = this.nowjs.getGroup(doc_id); 
    group.addUser(that.user.clientId); 

    //want to know when a user leaves a group 
    group.on('leave', function() { 
     console.log("user left group:"+groupId) 
     //do group clean up 
    }); 
}; 

スコープに問題がありますか?

+0

、あなたのコード内の任意の場所にgroup.removeUserを呼ぶのですか? nowjs disconnectイベントで 'group.removeUser(that.user.clientId)'を起動しようとしないと! – drinchev

+0

私はleaveコールバックの中でそれを試みましたが、removeUserはleaveイベントをトリガーしてループに陥ってしまいました。 –

+0

私はイベントの切断を意味します。 'nowjs.on( 'disconnect'、function(){group.removeUser(this.user.clientId)}))'のようになります。 removeUserがない場合、元のコードでグループの離脱イベントが発生する原因は何ですか? – drinchev

答えて

0

接続が切断されると、接続されているグループからすべてのユーザーを削除する必要があります。

ような何か:問題はあなたのグループの配列に間違いなくある

nowjs.on('disconnect', function() { 
     var that = this; 
     this.getGroups(function(groups) { 
      for (i=0 ; i < groups.length; i++) { 
       nowjs.getGroup(groups[i]).removeUser(that.user.clientId); 
      } 
     } 
} 
+0

ありがとうございました。これは、「離脱」イベントが使用できないという意味の回避策のようです。それはまた、ユーザーが私がする必要があるただ1つのグループを残すことを許可しません。 –

+0

IMHO、彼がグループを離れたときにグループに参加させるときには、彼がグループを外したときにそのグループを外す必要があります。目的(切断せずに)。 – drinchev

+2

私は今や切断されたときにすべてのグループからユーザーを削除すると信じています。私が本当に必要とするのは、もし誰かが去ったら、グループをきれいにすることです。 –

関連する問題