From 0eedd689b8be93a77da17bafe6f1fdc5fd927751 Mon Sep 17 00:00:00 2001 From: Adam Goldsmith Date: Mon, 9 Nov 2020 12:43:29 -0500 Subject: [PATCH] Automatically reconnect to octoprint instances' websockets --- src/server.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/server.ts b/src/server.ts index b8829df..44e7053 100644 --- a/src/server.ts +++ b/src/server.ts @@ -98,14 +98,16 @@ class PrinterStatus { passive: 'true', }); + this.connect_websocket(login.name + ':' + login.session); + } + + connect_websocket(authToken: string): void { this.websocket = new WebSocket( url.resolve(this.address, '/sockjs/websocket') ); this.websocket .on('open', () => { - this.websocket!.send( - JSON.stringify({ auth: login.name + ':' + login.session }) - ); + this.websocket!.send(JSON.stringify({ auth: authToken })); }) .on('message', (data: WebSocket.Data) => { const event: octoprint.Message = JSON.parse(data as string); @@ -119,6 +121,10 @@ class PrinterStatus { if ('current' in event || 'history' in event) { this.lastStatus = ext_event; } + }) + .on('close', () => { + console.log('Lost connection to ' + this.name + ' reconnecting...'); + setTimeout(() => this.connect_websocket(authToken), 5000); }); }