export default class WebsocketClient { /** * @param websocketUrl * @param listener * @param reconnectOnCloseAfter time to reconnect after connection fail in ms. -1 to not reconnect automatically. * @param checkFunction */ public constructor( private readonly websocketUrl: string, private readonly listener: (websocket: WebSocket, e: MessageEvent) => void, private readonly reconnectOnCloseAfter: number = 1000, ) { } public run(): void { const websocket = new WebSocket(this.websocketUrl); websocket.onopen = () => { console.debug('Websocket connected'); websocket.send(document.cookie); }; websocket.onmessage = (e) => { this.listener(websocket, e); }; websocket.onerror = (e) => { console.error('Websocket error', e); }; websocket.onclose = (e) => { console.debug('Websocket closed', e.code, e.reason); if (this.reconnectOnCloseAfter >= 0) { setTimeout(() => { this.run(); }, this.reconnectOnCloseAfter); } }; } }