由于简单的事件相关问题,我被困在这里。这是问题所在:
但是,事件不会在任何进程中捕获。我尝试将事件设置为全局并将事件全局分配给符号,但也无法使其工作/捕获事件。
以下是代码:
...require > events.js...
... create cluster logic...
setInterval(function () {
evt.emit('testTimer', {tester: 'test'});
evt.tester();
}, 1000);
...require > events.js...
evt.on('testTimer', function (data) {
console.log('Starting Sync ', data);
});
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;
答案 0 :(得分:2)
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);
}
})