UNPKG

homebridge-gsh

Version:
118 lines (74 loc) 3.6 kB
# WS Connect WS Connect is a wrapper for the [ws](https://github.com/websockets/ws) WebSocket client for Node.js that will automatically reconnect lost or disconnected WebSocket connections transparently. This module is for Node.js 10+ only and will not work in the browser. The server implementation must respond to `ping` messages as required by the WebSocket spec. ## Install ``` npm install @homebridge/ws-connect ``` ## Usage ### Example ```js const { WebSocket } = require('@homebridge/ws-connect') // establish new websocket connection const socket = new WebSocket('ws://127.0.0.1:8080') // send message to server socket.send('some message') // send json to server socket.sendJson({hello: 'world'}) // listen for messages from server socket.on('message', (msg) => { console.log(msg) }) // listen for json from server socket.on('json', (data) => { console.log(data) }) // emitted each time the websocket connection is established socket.on('open', () => { console.log('Websocket Connection Established') }) // emitted each time the websocket connection disconnects socket.on('close', () => { console.log('Websocket Connection Closed') }) // listen for websocket status events, connect and disconnect events, errors, etc. socket.on('websocket-status', (status) => { console.log(status) }) ``` ## Class WebSocket This class represents a WebSocket. It extends the `EventEmitter`. ### new WebSocket(address, [options]) * `address` {String} The URL to which to connect. * `reconnectInterval` {Number} The interval in milliseconds between connection attempts. Default 5000. * `pingInterval` {Number} The interval in milliseconds that the client should ping the server. Default 10000. * `pingFailureLimit` {Number} The number of failed pings before a reconnection is attempted. Default 2. * `beforeConnect` {Promise} A function that returns a promise that is to be called before (re)connecting to the server. * `protocols` {String|Array} The list of subprotocols. * `options` {Object} The [ws](https://github.com/websockets/ws) client connection options. See [docs](https://github.com/websockets/ws/blob/master/doc/ws.md#new-websocketaddress-protocols-options). ### socket.ws The original [ws](https://github.com/websockets/ws/blob/master/doc/ws.md#class-websocket) client connection. ### socket.send(data[, callback]) * `data` {Any} The data to send. * `callback` {Function} An optional callback which is invoked when data is written out. ### socket.sendJson(data[, callback]) The same as `socket.send` except the data will be `JSON.stringified` before being sent. ### socket.close() Closes the WebSocket connection and halts reconnection attempts. ### Event: 'message' * `data` {String|Buffer|ArrayBuffer|Buffer[]} Emitted when a message is received from the server. ### Event: 'json' Emitted when a json data is received from the server. ### Event: 'open' Emitted when the connection is established ### Event: 'close' * `code` {Number} * `reason` {String} Emitted when the connection is closed. `code` is a numeric value indicating the status code explaining why the connection has been closed. `reason` is a human-readable string explaining why the connection has been closed. ### Event: 'websocket-status' * `message` {String} Emits human-readable messages regarding the status of the WebSocket connection such as disconnect and reconnecting events, ping timeouts, and errors. Useful for debugging. # Dependant Applications - homebridge-gsh - [NPM Dependants](https://www.npmjs.com/package/@homebridge/ws-connect?activeTab=dependents)