socket.io Removing specific listener socket.io Removing specific listener javascript javascript

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.