从集群创建文件发送的任何集群进程中捕获的 Nodejs 事件
Nodejs events captured in any cluster process sent from cluster creating file
由于一个简单的事件相关问题,我被困在这里。这是问题所在:
- 我使用 cluster.js 创建了一个集群,并从 server.js 中分叉出来
cluster.js。
- 我在 cluster.js 中设置了一个计时器,每 1 分钟我
触发事件 'testTimer'。我用事件文件做了
它。
- 我正在尝试从 child
中捕获此事件 'testTimer'
使用我导入 server.js 的相同文件进行处理
.on('testTimer', 回调)
但是,没有在任何进程中捕获事件。我已尝试将事件设为全局事件并将事件全局分配给一个符号,但也无法获得它 work/capture 事件。
代码如下:
cluster.js(child 进程创建者)
...require > events.js...
... create cluster logic...
setInterval(function () {
evt.emit('testTimer', {tester: 'test'});
evt.tester();
}, 1000);
server.js(child 进程)
...require > events.js...
evt.on('testTimer', function (data) {
console.log('Starting Sync ', data);
});
events.js(事件的通用文件)
var util = require("util");
var EventEmitter = require("events").EventEmitter;
function test () {
EventEmitter.call(this);
}
test.prototype.tester = function (){
this.emit('testTimer', {missed: 'this'})
}
util.inherits(test, EventEmitter);
module.exports = test;
EventEmitter 实例不能超出进程范围。如果你想在父子之间进行交流,使用worker.send()
:
// cluster.js
setInterval(function () {
for (const id in cluster.workers) {
cluster.workers[id].send({ type : 'testTimer', data : { tester : 'test' }});
}
}, 1000);
// server.js
process.on('message', function(message) {
if (message.type === 'testTimer') {
console.log('Starting Sync ', message.data);
}
})
由于一个简单的事件相关问题,我被困在这里。这是问题所在:
- 我使用 cluster.js 创建了一个集群,并从 server.js 中分叉出来 cluster.js。
- 我在 cluster.js 中设置了一个计时器,每 1 分钟我
触发事件 'testTimer'。我用事件文件做了
它。 - 我正在尝试从 child
中捕获此事件 'testTimer' 使用我导入 server.js 的相同文件进行处理 .on('testTimer', 回调)
但是,没有在任何进程中捕获事件。我已尝试将事件设为全局事件并将事件全局分配给一个符号,但也无法获得它 work/capture 事件。
代码如下:
cluster.js(child 进程创建者)
...require > events.js...
... create cluster logic...
setInterval(function () {
evt.emit('testTimer', {tester: 'test'});
evt.tester();
}, 1000);
server.js(child 进程)
...require > events.js...
evt.on('testTimer', function (data) {
console.log('Starting Sync ', data);
});
events.js(事件的通用文件)
var util = require("util");
var EventEmitter = require("events").EventEmitter;
function test () {
EventEmitter.call(this);
}
test.prototype.tester = function (){
this.emit('testTimer', {missed: 'this'})
}
util.inherits(test, EventEmitter);
module.exports = test;
EventEmitter 实例不能超出进程范围。如果你想在父子之间进行交流,使用worker.send()
:
// cluster.js
setInterval(function () {
for (const id in cluster.workers) {
cluster.workers[id].send({ type : 'testTimer', data : { tester : 'test' }});
}
}, 1000);
// server.js
process.on('message', function(message) {
if (message.type === 'testTimer') {
console.log('Starting Sync ', message.data);
}
})