有没有办法从一个工人向 node.js 中的其他工人发送消息?
Is there a way to send a message from a worker to other workers in node.js?
我可以使用process.send
从工人向主人发送消息。我可以使用下面的代码从 master 向每个 worker 发送消息。
for (var id in cluster.workers) {
cluster.workers[id].send({command: 'doSomething'});
}
要从一个工人向其他工人发送消息,我必须向主人发送一条消息,然后让它转发消息。这会导致原始发件人也收到邮件,这是我想避免的事情,但我可以接受!
我也尝试像在 master 中那样直接从 worker 发送消息,但是 cluster.workers
在 worker 中是 undefined
。
还有其他方法吗?
您可以比较 pid's
发件人和收件人:
worker.on('message', function(msg) {
for (var id in cluster.workers) {
if (cluster.workers[id].process.pid !== this.process.pid) {
cluster.workers[id].send({
command: 'doSomething',
from: this.process.pid
});
}
}
}
我创建了一个名为 ipc-messenger 的简单程序包来帮助完成此操作。它提供了一种抽象,其中的细节对用户是隐藏的。
函数messageSiblings
可用于仅向其他工作人员发送消息,messageWorkers
可用于向所有工作人员发送消息。
示例:
var ipcm = require('ipc-messenger')
ipcm.messageSiblings('hello')
我可以使用process.send
从工人向主人发送消息。我可以使用下面的代码从 master 向每个 worker 发送消息。
for (var id in cluster.workers) {
cluster.workers[id].send({command: 'doSomething'});
}
要从一个工人向其他工人发送消息,我必须向主人发送一条消息,然后让它转发消息。这会导致原始发件人也收到邮件,这是我想避免的事情,但我可以接受!
我也尝试像在 master 中那样直接从 worker 发送消息,但是 cluster.workers
在 worker 中是 undefined
。
还有其他方法吗?
您可以比较 pid's
发件人和收件人:
worker.on('message', function(msg) {
for (var id in cluster.workers) {
if (cluster.workers[id].process.pid !== this.process.pid) {
cluster.workers[id].send({
command: 'doSomething',
from: this.process.pid
});
}
}
}
我创建了一个名为 ipc-messenger 的简单程序包来帮助完成此操作。它提供了一种抽象,其中的细节对用户是隐藏的。
函数messageSiblings
可用于仅向其他工作人员发送消息,messageWorkers
可用于向所有工作人员发送消息。
示例:
var ipcm = require('ipc-messenger')
ipcm.messageSiblings('hello')