gpt4 book ai didi

node.js - NodeJS|集群 : How to send data from master to all or single child/workers?

转载 作者:IT老高 更新时间:2023-10-28 22:04:07 26 4
gpt4 key购买 nike

我有来自 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);
}

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

最佳答案

因为 cluster.fork 是在 child_process.fork 之上实现的,您可以使用 worker.send({ msg: 'test' }) 将消息从 master 发送到 worker,并通过 process.send({ msg 从 worker 发送到 master : '测试' });.你会收到这样的消息:worker.on('message', callback)(从worker到master)和process.on('message', callback); (从主人到 worker )。

这是我的完整示例,您可以通过浏览 http://localhost:8000/ 进行测试然后worker会向master发送消息,master会回复:

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);
}

关于node.js - NodeJS|集群 : How to send data from master to all or single child/workers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com