'use strict'; const EventEmitter = require('events'); // wrapper around the Node.js ws module // for use in browsers class WebSocketWrapper extends EventEmitter { constructor(url) { super(); this._ws = new WebSocket(url); // eslint-disable-line no-undef this._ws.onopen = () => { this.emit('open'); }; this._ws.onclose = () => { this.emit('close'); }; this._ws.onmessage = (event) => { this.emit('message', event.data); }; this._ws.onerror = () => { this.emit('error', new Error('WebSocket error')); }; } close() { this._ws.close(); } send(data, callback) { try { this._ws.send(data); callback(); } catch (err) { callback(err); } } } module.exports = WebSocketWrapper;