Node.js 多次调用nowjs组离开事件
我正在使用now.js groups,并希望在用户离开某个组时进行监听,以便在该组为空时进行一些整理。我发现,每次用户加入一个组时,都会多次调用休假事件,即如果我加入一个组并在第三次时关闭浏览器3次,休假将被调用3次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.
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,当用户断开连接时,你应该将其从他所在的组中删除,因为在每次连接时,你都在放置他再次在组中…离开事件仍然处于启用状态,例如,如果有人故意离开组(而不是通过断开连接)。我相信现在在断开连接后,用户仍将从所有组中删除。如果有人离开,我真正需要的是清理组中的一个或多个用户。