UNPKG

vtally

Version:

An affordable and reliable Tally Light that works via WiFi based on NodeMCU / ESP8266. Supports multiple video mixers.

38 lines (37 loc) 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SocketAwareEvent = void 0; /* Takes care that an event on the server is passed through * a socket to the browser. * * The heavy lifting it does is making sure events are registered * and unregistered accordingly. This should prevent dangling event * listeners as much as possible. */ class SocketAwareEvent { constructor(eventEmitter, eventName, socket, fnc) { this.eventEmitter = eventEmitter; this.socket = socket; this.eventName = eventName; this.eventListener = (...args) => { fnc(socket, ...args); }; this.isRegistered = false; } register() { if (!this.isRegistered) { console.debug(`Connecting event ${this.eventName} to socket ${this.socket.id}`); this.eventEmitter.on(this.eventName, this.eventListener); this.socket.on("disconnect", () => this.unregister()); this.isRegistered = true; } } unregister() { if (this.isRegistered) { console.debug(`Detatching event ${this.eventName} from socket ${this.socket.id}`); } this.eventEmitter.off(this.eventName, this.eventListener); this.isRegistered = false; } } exports.SocketAwareEvent = SocketAwareEvent;