0

process.sendワーカーからマスターにメッセージを送信するために使用できます。次のコードを使用して、マスターから各ワーカーにメッセージを送信できます。

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 に答える