Files
ewelink-api/mixins/websocket/openWebSocketMixin.js
Martin M 4a21470978 Release v1.6.0 (#15)
* added new method to listen for websocket messages

* version bump

* updated README
2019-09-15 01:48:13 -03:00

38 lines
901 B
JavaScript

const W3CWebSocket = require('websocket').w3cwebsocket;
const WebSocketAsPromised = require('websocket-as-promised');
const payloads = require('../../lib/payloads');
const openWebSocketMixin = {
/**
* Open a socket connection to eWeLink
* and execute callback function with server message as argument
*
* @param callback
*
* @returns {Promise<WebSocketAsPromised>}
*/
async openWebSocket(callback) {
const payloadLogin = await payloads.wssLoginPayload({
at: this.at,
apiKey: this.apiKey,
});
const wsp = new WebSocketAsPromised(this.getApiWebSocket(), {
createWebSocket: wss => new W3CWebSocket(wss),
});
wsp.onMessage.addListener(message => {
const data = JSON.parse(message);
callback(data);
});
await wsp.open();
await wsp.send(payloadLogin);
return wsp;
},
};
module.exports = openWebSocketMixin;