node.js – NodeJS | Cluster:如何从master发送数据到所有或单个子/ worker?

我有工作(股票)脚本从 node

var cluster = require('cluster');
var http = require('http');
var numReqs = 0;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < 2; i++) {
    var worker = cluster.fork();

    worker.on('message',function(msg) {
      if (msg.cmd && msg.cmd == 'notifyRequest') {
        numReqs++;
      }
    });
  }

  setInterval(function() {
    console.log("numReqs =",numReqs);
  },1000);
} else {
  // Worker processes have a http server.
  http.Server(function(req,res) {
    res.writeHead(200);
    res.end("hello world\n");
    // Send message to master process
    process.send({ cmd: 'notifyRequest' });
  }).listen(8000);
}

在上述脚本中,我可以轻松地将数据从worker发送到master进程.但是如何从主人员发送数据到工作人员?举个例子,如果可能的话.

解决方法

因为cluster.fork是在 child_process.fork之上实现的,所以你可以使用worker.send({msg:’test’})从master发送消息,通过process.send({msg :’test’});.你收到如下消息:worker.on(‘message’,callback)(从worker到master)和process.on(‘message’,callback); (从主人到工作人员).

这是我的完整示例,您可以通过浏览http://localhost:8000/进行测试然后工作人员将向主人发送消息,主人将回复

var cluster = require('cluster');
var http = require('http');
var numReqs = 0;
var worker;

if (cluster.isMaster) {
  // Fork workers.
  for (var i = 0; i < 2; i++) {
    worker = cluster.fork();

    worker.on('message',function(msg) {
      // we only want to intercept messages that have a chat property
      if (msg.chat) {
        console.log('Worker to master: ',msg.chat);
        worker.send({ chat: 'Ok worker,Master got the message! Over and out!' });
      }
    });

  }
} else {
  process.on('message',function(msg) {
    // we only want to intercept messages that have a chat property
    if (msg.chat) {
      console.log('Master to worker: ',msg.chat);
    }
  });
  // Worker processes have a http server.
  http.Server(function(req,res) {
    res.writeHead(200);
    res.end("hello world\n");
    // Send message to master process
    process.send({ chat: 'hey master,I got a new request!' });
  }).listen(8000);
}

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...