Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
89
rated 0 times [  96] [ 7]  / answers: 1 / hits: 79642  / 10 Years ago, tue, april 15, 2014, 12:00:00

I'm using Socket.io v0.9.16 and
Chrome 34



I'm trying to remove a specific listener, or unsubscribe from a specific subscription



Something like this:



socket.on('testComplete',function(data){
console.log('test complete',data);
});

function emitTest(){
console.log('emitting test');
socket.emit('test','first emit');
}

function removeListener(){
socket.removeListener('testComplete');
}


If I call the emitTest function, and then the removeListener function, I still see the 'test complete' message when I call emitTest again. The listener should have been removed, if the socket function even works.



I'm looking for a way to remove a specific listener that actually works.



This answer says that removeListener doesn't work.



Is there any downside to just doing this:



socket.removeListener=function(name){
if(socket.$events.hasOwnProperty(name)){
delete socket.$events[name];
}
};


I marked an answer as correct, but I'm using the above in my code since it works better with my design.


More From » sockets

 Answers
35
//To unsubscribe all listeners of an event
socket.off('event-name');

//to unsubscribe a certain listener
socket.off('event-name', listener);


Note that socket.off, socket.removeListener, socket.removeAllListeners, socket.removeEventListener are synonyms.



This is tested on socket.io v1.4.3


[#71448] Monday, April 14, 2014, 10 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
darrell

Total Points: 109
Total Questions: 113
Total Answers: 113

Location: Zambia
Member since Sat, Oct 31, 2020
4 Years ago
;