Когда я создаю кластерное приложение, например
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 является мастером при запуске моего приложения, поэтому оно никогда не становится мастером, поэтому возникает проблема.Мне нужно иметь возможность общаться между моими работниками, потому что они поддерживают соединения через веб-сокеты, и это кажется единственным способом вещания.Какие есть варианты?
Если я запускаю его без режима кластера (pm2 start index.js
), тогда все, кажется, выполняется должным образом, но тогда я получаю только один процесс в pm2 list
, который является обломом, если естьспособ обойти это и заставить pm2 отображать все дочерние процессы отдельно без использования кластерного режима. Я бы тоже был доволен этим решением.