有没有办法从node发送消息给node.js中的其他worker?

时间:2016-02-17 17:08:47

标签: node.js node-cluster

我可以使用process.send从工作人员向主人发送消息。我可以使用以下代码从主服务器向每个工作人员发送消息。

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

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

我也尝试直接从工作人员发送消息,就像在主服务器中完成消息一样,但cluster.workers在工作人员中是undefined

还有其他办法吗?

2 个答案:

答案 0 :(得分: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
      });

    }

  }

}

答案 1 :(得分:0)

我创建了一个名为ipc-messenger的简单包,它有助于实现此目的。它提供了一个抽象,其中隐藏了用户的详细信息。

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

示例:

var ipcm = require('ipc-messenger')
ipcm.messageSiblings('hello')