UNPKG

global-event-handler

Version:

A hierarchical global event handler. Runs as its own fork or standalone server and syncs events acros forks and or servers

133 lines 5.62 kB
"use strict"; //import {globalEventHandlerServer} from './server'; var client_1 = require('./client'); var client_2 = require('./client'); exports.globalEventHandlerClient = client_2.globalEventHandlerClient; exports.globalEvent = client_2.globalEvent; exports.globalEventLissener = client_2.globalEventLissener; var globalEventHandler = (function () { function globalEventHandler(options) { if (options === void 0) { options = {}; } this._port = 9838; this._client = true; this._server = true; this._serverAddress = 'localhost'; this._debug = false; this._pm2 = false; var me = this; for (var _o in options) { this['_' + _o] = options[_o]; } if (this._pm2) this.pm2 = require('pm2'); if (this._server) { var cluster = require('cluster'); if (cluster.isMaster) { var args = []; if (this._debug) args.push('--debug=5859'); if (!this._pm2) this.loanchServer(require('child_process').fork(__dirname + '/server.js', [], { execArgv: args })); else { this.pm2.connect(function (err) { console.log({ err: err }); me.pm2.list(function (err, pList) { //console.log(pList) var pi = pList.find(function (pp) { console.log(pp.pm2_env.status); return pp.name == 'server' && pp.pm2_env.status != 'stopped'; }); if (pi) console.log(pi.pm2_env.pm_id); if (pi) me.pm2.sendDataToProcessId(pi.pm2_env.pm_id, { topic: 'process:msg', data: { event: 'connect', port: me._port } }, function (err) { console.log({ err: err }); }); else { var c = me.pm2.start({ script: __dirname + '/server.js', function: function (error, apps) { console.log({ error: error }); console.log({ apps: apps }); } }); var pi = pList.find(function (pp) { //console.log(pp.name) return pp.name == 'server' && pp.pm2_env.status != 'stopped'; }); if (pi) me.pm2.sendDataToProcessId({ type: 'process:msg', data: { event: 'connect', port: me.port }, id: pi.pm2_env.pm_id }, function (err) { console.log({ err: err }); }); } }); }); } } } if (this._client) { this._globalEventHandlerClient = new client_1.globalEventHandlerClient(this._port, this._serverAddress); } } Object.defineProperty(globalEventHandler.prototype, "port", { get: function () { return this._port; }, enumerable: true, configurable: true }); Object.defineProperty(globalEventHandler.prototype, "client", { get: function () { return this._client; }, enumerable: true, configurable: true }); Object.defineProperty(globalEventHandler.prototype, "server", { get: function () { return this._server; }, enumerable: true, configurable: true }); Object.defineProperty(globalEventHandler.prototype, "serverAddress", { get: function () { return this._serverAddress; }, enumerable: true, configurable: true }); Object.defineProperty(globalEventHandler.prototype, "globalEventHandlerClient", { get: function () { return this._globalEventHandlerClient; }, enumerable: true, configurable: true }); globalEventHandler.prototype.loanchServer = function (server) { var me = this; server.send({ event: 'connect', port: this._port }); server.on('exit', function (code, signal) { if (signal) { if (me._debug) console.log("globalEventServer was killed by signal: " + signal); } else if (code !== 0) { if (me._debug) console.log("globalEventServer exited with error code: " + code); var args = []; if (me._debug) args.push('--debug=5859'); me.loanchServer(require('child_process').fork(__dirname + '/server.js', [], { execArgv: args })); } else { if (me._debug) console.log('globalEventServer died!'); } }); var ON_DEATH = require('death')({ uncaughtException: true }); ON_DEATH(function (signal, err) { server.kill('SIGINT'); }); }; return globalEventHandler; }()); exports.globalEventHandler = globalEventHandler; //# sourceMappingURL=index.js.map