Ich benutze now.js groups und möchte darauf achten, wenn ein Benutzer eine Gruppe verlässt, damit ich etwas aufräumen kann, wenn die Gruppe leer ist. Ich finde, dass das Abwesenheitsereignis mehrmals für jedes Mal aufgerufen wird, wenn ein Benutzer in einer Gruppe war, d. H. Wenn ich einer Gruppe beitrete und meinen Browser dreimal am dritten Mal schließe, werde ich dreimal aufgerufen.nowjs Gruppe leave Ereignis mehrmals aufgerufen
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
});
};
Mache ich etwas falsch mit Scoping?
Das Problem ist auf jeden Fall in der Gruppe Array, rufen Sie group.removeUser überall in Ihrem Code? Wenn nicht versucht wird, "group.removeUser (that.user.clientId)" auf nowjs zu trennen, trennen Sie das Ereignis! – drinchev
Ich habe versucht, dass innerhalb des Rückrufs zu verlassen aber removeUser löst das Verlassen-Ereignis, so dass Sie in einer Schleife stecken bleiben. –
Ich meinte, trennen Ereignis smth. wie: 'nowjs.on ('disconnect', function() {group.removeUser (this.user.clientId)});'. Wenn Sie removeUser nicht haben, was verursacht das leave-Ereignis der Gruppe in Ihrem ursprünglichen Code? – drinchev