From ac290d18aee3ef58978538e3f799ebd081a026ae Mon Sep 17 00:00:00 2001 From: Mathias Scherer Date: Sat, 18 Sep 2021 01:41:19 +0200 Subject: [PATCH] fixes reconnection issues in node_helper --- node_helper.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/node_helper.js b/node_helper.js index 003b2a3..09e72c3 100644 --- a/node_helper.js +++ b/node_helper.js @@ -8,6 +8,7 @@ module.exports = NodeHelper.create({ stop, socketNotificationReceived, connect, + connectWs, getState, toggleState, setCoverPosition, @@ -83,6 +84,10 @@ async function connect(payload) { entities: [], }; + this.connectWs(connectionConfig, payload) +} + +async function connectWs(connectionConfig, payload) { const self = this; HomeAssistantWS.default({ ...connectionConfig, @@ -90,13 +95,22 @@ async function connect(payload) { }) .then((hassWs) => { this.connections[payload.identifier].websocket = hassWs; - hassWs.onEvent("state_changed", onStateChangedEvent.bind(self)); + hassWs.on("state_changed", onStateChangedEvent.bind(self)); + hassWs.on('ws_close', () => { + this.logger.debug(`Lost connection for ${payload.identifier}... Trying to reconnect in 2secs`) + setTimeout(() => { + this.connectWs(connectionConfig, payload) + }, 2000) + }) }) .catch((err) => { this.logger.error( - `WS connection for ${payload.identifier} failed with`, - err + `WS connection for ${payload.identifier} failed...` ); + this.logger.debug(`Trying to reconnect for ${payload.identifier} in 2secs`) + setTimeout(() => { + this.connectWs(connectionConfig, payload) + }, 2000) }); }