Node.js Cluster Worker:关闭事件
Posted
技术标签:
【中文标题】Node.js Cluster Worker:关闭事件【英文标题】:Node.js Cluster Worker: Turn off event 【发布时间】:2017-12-29 13:55:49 【问题描述】:考虑以下node.js
集群配置。如何一转off
回调以防止进一步的消息回调?碰巧没有off
方法。我必须用一个新的回调来更新回调,似乎所有旧的回调都被触发了。
cluster.on('fork', worker =>
worker.on('message', msg => // Do something...)
)
【问题讨论】:
【参考方案1】:.on()
的反义词是.removeListener()
,因为.on()
只是.addListener()
的别名。为什么他们添加了.on()
作为别名,但没有添加.off()
作为别名,我真的不知道(对我来说似乎合乎逻辑)。
但是,为了能够使用removeListener()
删除单个侦听器,您需要为最初附加的函数提供函数引用。所以,你需要保存:
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);
);
如果您只想删除给定事件的所有事件侦听器,则不必保存以前的函数引用:
cluster.on('fork', worker =>
worker.on('message', msg => // Do something...)
// some time later, remove all listeners for a particular message
worker.removeAllListeners('message');
);
相关回答:What is the difference between addListener(event, listener) and on(event, listener) method in node.js?
【讨论】:
@anshulkoka - 这能回答你的问题吗?如果是这样,您可以通过单击答案左侧的绿色复选标记向社区表明这一点,这也将为您赢得一些声誉积分。【参考方案2】:您可以使用 removeListener 方法。 https://nodejs.org/api/events.html#events_emitter_removelistener_eventname_listener
【讨论】:
以上是关于Node.js Cluster Worker:关闭事件的主要内容,如果未能解决你的问题,请参考以下文章
使用 cluster.fork() 调试 Node.js 进程
Node.js:使用 IPC 的 master 和 worker 之间的请求/响应
使用 Node.js/python 的 Producer/Consumer + Worker 架构