0

我可以用来process.send从工人向主人发送消息。我可以使用以下代码从 master 向每个 worker 发送消息。

for (var id in cluster.workers) {
  cluster.workers[id].send({command: 'doSomething'});
}

要从工作人员向其他工作人员发送消息,我必须向主人发送消息,然后让它转发消息。这导致原始发件人也收到了消息,这是我想避免的事情,但我可以忍受它!

我还尝试直接从工人发送消息,就像它在主人中完成但cluster.workersundefined工人中一样。

有没有其他方法可以做到这一点?

4

2 回答 2

2

您可以比较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
      });

    }

  }

}
于 2016-02-17T19:17:22.283 回答
1

我创建了一个名为ipc-messenger的简单包来帮助实现这一点。它提供了一种对用户隐藏细节的抽象。

该函数messageSiblings可用于仅向其他工作人员messageWorkers发送消息,并向所有工作人员发送消息。

例子:

var ipcm = require('ipc-messenger')
ipcm.messageSiblings('hello')
于 2016-04-09T17:56:01.240 回答