"use strict"; import {Common} from "../Utils/Common.ecma.js"; /** * @class WebSocketsDriver * @constructor * @param {!(Object.|Array.)} inputs * @returns {void} * @access public * @static */ export const WebSocketsDriver = (function(){ /** * @constructs WebSocketsDriver * @param {!(Object.|Array.)} inputs * @returns {void} * @access private * @static */ const WebSocketsDriver = function(inputs){ /** @type {WebSocketsDriver} */ const self = this; let server = null, url = null, started = false; this.on_open = new Event(); this.on_message = new Event(); this.on_error = new Event(); this.on_close = new Event(); const constructor = () => {}; this.start = (callback = null) => { const end = ok => Common.execute(callback, ok); if(started){ end(false); return false; }; started = true; server = new WebSocket(`ws://${host}:${port}`); server.onopen = on_open; server.onmessage = event => { self.on_message.trigger(event); }; server.onerror = event => { self.on_error.trigger(event); }; server.onclose = event => { self.on_close.trigger(event); }; return true; }; this.close = (callback = null) => { const end = ok => Common.execute(callback, ok); if(!started){ end(false); return false; }; started = false; server.close(); server = null; return true; }; const open = event => { console.log(["client", event]); }; const new_message = event => { console.log(["message", event]); }; const error = event => { console.log(["error", event]); }; const close = event => { console.log(["close", event]); }; this.send = (ids, message) => { Common.get_array(ids).forEach(id => {}); }; this.send_to_all = message => { self.send(Object.keys(clients), message); }; constructor(); }; return WebSocketsDriver; })();