fixes reconnection issues in node_helper

This commit is contained in:
Mathias Scherer 2021-09-18 01:41:19 +02:00
parent 086d9fb51b
commit ac290d18ae
No known key found for this signature in database
GPG Key ID: 0B90BA0208F8DD2B

View File

@ -8,6 +8,7 @@ module.exports = NodeHelper.create({
stop, stop,
socketNotificationReceived, socketNotificationReceived,
connect, connect,
connectWs,
getState, getState,
toggleState, toggleState,
setCoverPosition, setCoverPosition,
@ -83,6 +84,10 @@ async function connect(payload) {
entities: [], entities: [],
}; };
this.connectWs(connectionConfig, payload)
}
async function connectWs(connectionConfig, payload) {
const self = this; const self = this;
HomeAssistantWS.default({ HomeAssistantWS.default({
...connectionConfig, ...connectionConfig,
@ -90,13 +95,22 @@ async function connect(payload) {
}) })
.then((hassWs) => { .then((hassWs) => {
this.connections[payload.identifier].websocket = 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) => { .catch((err) => {
this.logger.error( this.logger.error(
`WS connection for ${payload.identifier} failed with`, `WS connection for ${payload.identifier} failed...`
err
); );
this.logger.debug(`Trying to reconnect for ${payload.identifier} in 2secs`)
setTimeout(() => {
this.connectWs(connectionConfig, payload)
}, 2000)
}); });
} }