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:
<//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
You need to pass in the listener function to removeListener
.
function testFun(data){
console.log('test complete',data);
}
socket.on('testComplete', testFun);
function emitTest(){
console.log('emitting test');
socket.emit('test','first emit');
}
function removeListener(){
socket.removeListener('testComplete', testFun);
}
If you're not using a function call, or even if you are the following worked for me:
getEventListeners(socket)['testComplete'][0].remove()
You could even loop through all the listeners attached and remove them.
for(var prop in getEventListeners(websocket))
{
$(getEventListeners(websocket)[prop]).each(function() { this.remove()})
}
It's worth pointing out that although this works, it only works in Chrome at the moment.