socket.io Removing specific listener
//To unsubscribe all listeners of an eventsocket.off('event-name');//to unsubscribe a certain listenersocket.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.