在nodejs集群中从worker到worker的消息

时间:2018-05-30 21:54:24

标签: javascript node.js websocket

当我创建像

这样的群集应用时
var cluster = require('cluster');

if (cluster.isWorker) {
  console.log('Worker ' + process.pid + ' has started.');
}

if (cluster.isMaster) {
  console.log('Master ' + process.pid + ' has started.');

  // Fork workers.
  for (var i = 0; i < require("os").cpus().length; i++) {
    var worker = cluster.fork();
  }
}

然后在群集模式下使用pm2运行它

pm2 start index.js -i 0

我的isMaster部分永远不会运行,我认为这是因为pm2在启动我的应用程序时是主人,因此它永远不会成为主人,所以问题就出现了。我需要能够在我的工作人员之间进行通信,因为他们保持websocket连接,这似乎是广播内容的唯一方式。有什么选择?

如果我在没有集群模式(pm2 start index.js)的情况下运行它,那么一切似乎都按预期执行但是我只在pm2 list中得到一个进程,这是一个无赖,如果有办法获得围绕它并让pm2分别显示所有子进程而不使用其集群模式我也对该解决方案感到满意。

1 个答案:

答案 0 :(得分:2)

如果您想使用process.message,您将无法使用pm2群集模式,因为process.message会向主人发送消息。

如果要使用pm2群集模式,则必须使用其他工作方式,例如RedisRabbitMQUnix Sockets

有一些软件包可以让您轻松设置IPC通信,例如:node-ipc