Node.js 多次调用nowjs组离开事件

Node.js 多次调用nowjs组离开事件,node.js,socket.io,nowjs-sockets,Node.js,Socket.io,Nowjs Sockets,我正在使用now.js groups,并希望在用户离开某个组时进行监听,以便在该组为空时进行一些整理。我发现,每次用户加入一个组时,都会多次调用休假事件,即如果我加入一个组并在第三次时关闭浏览器3次,休假将被调用3次 chatserver.prototype.joinGroup = function(groupId) { //user joins group var group = this.nowjs.getGroup(doc_id); group.addUser(that.

我正在使用now.js groups,并希望在用户离开某个组时进行监听,以便在该组为空时进行一些整理。我发现,每次用户加入一个组时,都会多次调用休假事件,即如果我加入一个组并在第三次时关闭浏览器3次,休假将被调用3次

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
   });
};

我的作用域是否有问题?

您应该在断开连接时将其连接到的组中的每个用户删除

比如:

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);
             }
        }
}
nowjs.on('disconnect',function(){
var=这个;
this.getGroups(函数(组){
对于(i=0;i
问题肯定出在您的组数组中,您是否在代码中的任何位置调用group.removeUser?如果没有,请尝试触发
group.removeUser(that.user.clientId)
on nowjs disconnect event!我在leave回调中尝试了这个方法,但是removeUser触发了leave事件,所以你陷入了一个循环。我的意思是disconnect event smth.like:
nowjs.on('disconnect',function(){group.removeUser(this.user.clientId)});
。如果您没有任何removeUser,是什么原因导致您原始代码中的组的离开事件?离开是由窗口关闭或使用聊天室隐喻导致的。在您的示例中,是如何获得对正确组的引用的?用户可能在4个组中,但他们只想离开一个组。我很抱歉写它作为答案,因为代码太多了!谢谢你的帮助。这似乎是一个解决办法,意味着“离开”事件无法使用。它也不允许用户只离开我需要做的一个组。IMHO,当用户断开连接时,你应该将其从他所在的组中删除,因为在每次连接时,你都在放置他再次在组中…离开事件仍然处于启用状态,例如,如果有人故意离开组(而不是通过断开连接)。我相信现在在断开连接后,用户仍将从所有组中删除。如果有人离开,我真正需要的是清理组中的一个或多个用户。