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.
Best Answer
Note that
socket.off
,socket.removeListener
,socket.removeAllListeners
,socket.removeEventListener
are synonyms.This is tested on socket.io v1.4.3