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

129 lines 5.09 kB
"use strict"; var rxjs_1 = require('rxjs'); var now = require("performance-now"); var globalEventHandlerClient = (function () { function globalEventHandlerClient(port, host) { var _this = this; this.port = port; this.host = host; this.eventListeners = {}; this.events = []; this.msgsToSend = []; this.on = false; this.createEvent = function (_eventName, key) { var newEvent = new globalEvent(_eventName, key, _this._socket, _this.disposeEvent); _this.events.push(newEvent); return newEvent; }; this.disposeEvent = function (_eventId) { var c = _this.events.length; for (var index = 0; index < c; index++) { if (_this.events[index].eventId == _eventId) { _this.events.slice(index, 1); } } }; this.createEventLissener = function (_eventName, key) { var newEventLissener = new globalEventLissener(_eventName, key, _this._socket, _this.disposeEventLissener); _this.eventListeners[newEventLissener.eventId] = newEventLissener; return newEventLissener; }; this.disposeEventLissener = function (_eventId) { delete _this.eventListeners[_eventId]; }; var tA, tB, tId = []; var net = require('net'), JsonSocket = require('json-socket'); //var port = 9838; //The same port that the server is listening on //var host = '127.0.0.1'; this._socket = new JsonSocket(new net.Socket()); //Decorate a standard net.Socket with JsonSocket var vm = this; setTimeout(function () { vm._socket.connect(port, host); }, 3000); var localSubjects = []; vm.msgsToSend = []; this._socket.on('connect', function () { //console.log('connected'); vm.on = true; vm.events.forEach(function (n) { n.connectToSocket(vm._socket); }); for (var n in vm.eventListeners) { vm.eventListeners[n].connectToSocket(vm._socket); } vm._socket.on('message', function (message) { if (vm.eventListeners[message.eventId]) vm.eventListeners[message.eventId].subject.next(message.evPackage); }); vm._socket.on('error', function (exc) { console.log("ignoring exception: " + exc); }); vm.msgsToSend.forEach(function (_m) { vm._socket.sendMessage(_m); }); vm.msgsToSend = []; }); vm._socket.__sendMessage = function (val) { if (vm.on) vm._socket.sendMessage(val); else vm.msgsToSend.push(val); }; } return globalEventHandlerClient; }()); exports.globalEventHandlerClient = globalEventHandlerClient; var globalEvent = (function () { function globalEvent(eventName, key, socket, _dispose) { var _this = this; this.eventName = eventName; this.key = key; this.socket = socket; this._dispose = _dispose; this.eventId = Math.random().toString() + now().toString(); this.connectToSocket = function (_socket) { _this.socket = _socket; }; this.next = function (_msg) { _this.socket.__sendMessage({ type: 'onEvent', key: _this.key, evPackage: { name: _this.eventName, tId: _this.eventId, msg: _msg } }); }; this.dispose = function () { _this._dispose(_this.eventId); }; this.connectToSocket(socket); } return globalEvent; }()); exports.globalEvent = globalEvent; var globalEventLissener = (function () { function globalEventLissener(eventName, key, _socket, _dispose) { var _this = this; this.eventName = eventName; this.key = key; this._socket = _socket; this._dispose = _dispose; this.eventId = Math.random().toString() + now().toString(); this.connectToSocket = function (_socket) { _this._socket = _socket; try { _this._socket.__sendMessage({ type: 'addEvent', eventId: _this.eventId, key: _this.key }); } catch (error) { } }; this.dispose = function () { _this._socket.__sendMessage({ type: 'removeEvent', eventId: _this.eventId }); _this.subject.complete(); _this._dispose(_this.eventId); }; var vm = this; this.observable = rxjs_1.Observable.create(function (_subject) { vm.subject = _subject; vm.connectToSocket(vm._socket); return vm.dispose; }); } return globalEventLissener; }()); exports.globalEventLissener = globalEventLissener; //# sourceMappingURL=client.js.map