diff --git a/Public/ecma/Drivers/WebSocketsDriver.ecma.js b/Public/ecma/Drivers/WebSocketsDriver.ecma.js index 1c1478f..db03388 100644 --- a/Public/ecma/Drivers/WebSocketsDriver.ecma.js +++ b/Public/ecma/Drivers/WebSocketsDriver.ecma.js @@ -1,15 +1,108 @@ "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(){ - const WebSocketsDriver = function(anp){ + /** + * @constructs WebSocketsDriver + * @param {!(Object.|Array.)} inputs + * @returns {void} + * @access private + * @static + */ + const WebSocketsDriver = function(inputs){ - const self = this, - clients = {}; - let client_i = 0; + /** @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(); };