Skip to content

Commit 586d6b2

Browse files
committed
Release 0.7.1 - do not open ws for empty endpoint
1 parent f1cd2e1 commit 586d6b2

File tree

4 files changed

+32
-17
lines changed

4 files changed

+32
-17
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-red-contrib-unifi-os",
3-
"version": "0.7.0",
3+
"version": "0.7.1",
44
"description": "Nodes to access UniFi data using endpoints and websockets",
55
"main": "build/nodes/unifi.js",
66
"scripts": {

src/nodes/WebSocket.ts

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,16 @@ module.exports = (RED: NodeAPI) => {
4040
action: string,
4141
callback: () => void
4242
): Promise<void> => {
43-
self.ws?.removeAllListeners()
44-
self.ws?.close(1000, `Node ${action}`)
45-
self.ws?.terminate()
46-
log.debug(`ws ${self.ws?.['id']} closed`)
47-
self.ws = undefined
43+
if (self.ws) {
44+
self.ws.removeAllListeners()
45+
self.ws.close(1000, `Node ${action}`)
46+
self.ws.terminate()
47+
log.debug(`ws ${self.ws?.['id']} closed`)
48+
self.ws = undefined
49+
} else {
50+
log.debug('ws already closed')
51+
}
52+
4853
callback()
4954
}
5055

@@ -249,7 +254,10 @@ module.exports = (RED: NodeAPI) => {
249254
const log = logger('UniFi', 'WebSocket', self.name, self)
250255

251256
self.endpoint = self.config.endpoint
252-
await setupWebsocket(self)
257+
258+
if (self.endpoint?.trim().length) {
259+
await setupWebsocket(self)
260+
}
253261

254262
self.on('input', async (msg) => {
255263
log.debug('Received input message: ' + util.inspect(msg))
@@ -260,16 +268,23 @@ module.exports = (RED: NodeAPI) => {
260268
msg.payload
261269
)
262270

263-
if (
264-
self.endpoint != (inputPayload.endpoint ?? self.config.endpoint)
265-
) {
266-
self.endpoint = inputPayload.endpoint ?? self.config.endpoint
267-
await stopWebsocket(self, log, 'reconfigured', () =>
268-
setupWebsocket(self)
269-
)
271+
const newEndpoint = inputPayload.endpoint ?? self.config.endpoint
272+
273+
if (newEndpoint?.trim().length) {
274+
if (self.endpoint != newEndpoint) {
275+
self.endpoint = newEndpoint
276+
277+
await stopWebsocket(self, log, 'reconfigured', () =>
278+
setupWebsocket(self)
279+
)
280+
} else {
281+
log.debug(
282+
`Input ignored, endpoint did not change: ${self.endpoint}, ${inputPayload.endpoint}, ${self.config.endpoint}`
283+
)
284+
}
270285
} else {
271286
log.debug(
272-
`Input ignored, endpoint did not change: ${self.endpoint}, ${inputPayload.endpoint}, ${self.config.endpoint}`
287+
`Input ignored, new endpoint is empty: ${self.endpoint}, ${inputPayload.endpoint}, ${self.config.endpoint}`
273288
)
274289
}
275290
})

src/types/WebSocketNodeConfigType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type WebSocketNodeConfigType = NodeDef & {
88
/**
99
* UniFi web socket endpoint. For example /proxy/network/wss/s/default/events or /api/ws/system
1010
*/
11-
endpoint: string
11+
endpoint?: string
1212
/**
1313
* How long in milliseconds to wait until trying to reconnect web socket client
1414
*/

src/types/WebSocketNodeType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import WebSocket from 'ws'
66
type WebSocketNodeType = Node & {
77
config: WebSocketNodeConfigType
88
accessControllerNode: AccessControllerNodeType
9-
endpoint: string
9+
endpoint?: string
1010
ws?: WebSocket & { id?: string }
1111
}
1212

0 commit comments

Comments
 (0)