UNPKG

@dazejs/framework

Version:

Daze.js - A powerful web framework for Node.js

79 lines 2.84 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Messenger = void 0; const cluster_1 = __importDefault(require("cluster")); const events_1 = require("events"); const container_1 = require("../container"); const helpers_1 = require("../cluster/helpers"); const MESSENGER = 'daze-messenger'; class Messenger extends events_1.EventEmitter { constructor() { super(); this.app = container_1.Container.get('app'); this.config = container_1.Container.get('config'); this.setMaxListeners(100); this.events = this.config.get('messenger', () => { }); this.run(); this.parseEvents(); } parseEvents() { this.events(this); } getMessage(channel, data, type = 'all') { return { action: MESSENGER, channel, data, type, }; } broadcast(channel, data, type) { var _a; const message = this.getMessage(channel, data, type); (_a = process.send) === null || _a === void 0 ? void 0 : _a.call(process, message); } broadcastToAgent(channel, data) { return this.broadcast(channel, data, 'agent'); } broadcastToWorker(channel, data) { return this.broadcast(channel, data, 'worker'); } run() { if (cluster_1.default.isMaster) { cluster_1.default.on('message', (_worker, message) => { var _a; if (!message || message.action !== MESSENGER) return; if (message.type === 'all') { const workers = (0, helpers_1.getAlivedWorkers)(); for (const worker of workers) { worker.send(message); } } else if (message.type === 'worker') { const workers = (_a = this.app.getWorkers()) !== null && _a !== void 0 ? _a : []; for (const worker of workers) { worker === null || worker === void 0 ? void 0 : worker.send(message); } } else if (message.type === 'agent') { const agent = this.app.getAgent(); agent === null || agent === void 0 ? void 0 : agent.send(message); } }); } else { process.on('message', (message) => { if (!message || message.action !== MESSENGER) return; this.emit(message.channel, message.data); }); } } } exports.Messenger = Messenger; //# sourceMappingURL=messenger.js.map