Я использую now.js-группы и хочу слушать, когда пользователь покидает группу, поэтому я могу выполнить некоторую очистку, если группа пуста. Я обнаружил, что событие leave вызывается несколько раз за каждый раз, когда пользователь был в группе, т. Е. Если я присоединяюсь к группе и закрываю свой браузер 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); } } }