The opposite of .on()
is .removeListener()
because .on()
is simply an alias for .addListener()
. Why they added .on()
as an alias, but did not add .off()
as an alias too, I don't really know (seems logical to me).
But, to be able to remove a single listener with removeListener()
, you need a function reference for the function you originally attached. So, you need to save that:
cluster.on('fork', worker => {
function msgHandler(msg) {
// process message
}
// add event handler
worker.on('message', msgHandler);
// then, sometime later, to remove the event handler
worker.removeListener('message', msgHandler);
});
If you just want to remove all event listeners for a given event, you don't have to save the former function reference:
cluster.on('fork', worker => {
worker.on('message', msg => {// Do something...})
// some time later, remove all listeners for a particular message
worker.removeAllListeners('message');
});
Related answer: What is the difference between addListener(event, listener) and on(event, listener) method in node.js?