Estoy atascado aquí debido a un simple problema relacionado con un evento. Aquí está el problema:
Sin embargo, los eventos no se capturan en ninguno de los procesos. Intenté hacer que el evento sea global y asignar el evento globalmente a un símbolo, pero tampoco pude hacer que funcionara/capturara el evento.
Aquí están los códigos:
...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;Las instancias de EventEmitter no pueden ir más allá de los límites de un proceso. Si desea comunicarse entre padres e hijos, use 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); } })