import * as signalR from "@microsoft/signalr"; import * as Utility from "../Core/Utility"; export class SystemHub { private static _instance: SystemHub; public hub: signalR.HubConnection; private _connectionState: number; /** * Erstellt eine Instanz */ private constructor() { this.init(); this._connectionState = 0; } /** * Instanz */ static getInstance(): SystemHub { if (!SystemHub._instance) { SystemHub._instance = new SystemHub(); } return SystemHub._instance; } /** * Initialisierung des Moduls */ private async init(): Promise { var self = this; self.hub = new signalR.HubConnectionBuilder() .withUrl("/systemHub") .withAutomaticReconnect() .build(); self.hub.onclose(async () => { self._connectionState = 0; await self.connectHub(); }); //self.connectHub(); } /** * Verbindung zum Hub starten.... */ public async connectHub(): Promise { var self = this; if (self._connectionState === 0) { await self.hub.start().then(() => { self._connectionState = 1; }).catch(async e => { await Utility.sleep(500); if (self._connectionState === 0) await self.connectHub(); }); } } }