mirror of
https://github.com/skydiver/ewelink-api.git
synced 2025-12-23 22:18:20 +01:00
* refactor websocket request * return response from websocket request * move request payloads to own file * refactor: removed duplicate device request * code linting * JSDoc methods * version bump
35 lines
764 B
JavaScript
35 lines
764 B
JavaScript
const W3CWebSocket = require('websocket').w3cwebsocket;
|
|
const WebSocketAsPromised = require('websocket-as-promised');
|
|
const delay = require('delay');
|
|
|
|
/**
|
|
* Open WebSocket connection and send provided payloads
|
|
*
|
|
* @param url
|
|
* @param payloads
|
|
* @param delayTime
|
|
*
|
|
* @returns {Array}
|
|
*/
|
|
const WebSocketRequest = async (url, payloads, ...{ delayTime = 1000 }) => {
|
|
const wsp = new WebSocketAsPromised(url, {
|
|
createWebSocket: wss => new W3CWebSocket(wss),
|
|
});
|
|
|
|
const responses = [];
|
|
wsp.onMessage.addListener(message => responses.push(message));
|
|
|
|
await wsp.open();
|
|
|
|
for (const payload of payloads) {
|
|
await wsp.send(payload);
|
|
await delay(delayTime);
|
|
}
|
|
|
|
await wsp.close();
|
|
|
|
return responses;
|
|
};
|
|
|
|
module.exports = WebSocketRequest;
|