AnP/Public/ecma/Drivers/WebSocketsDriver.ecma.js

111 lines
2.5 KiB
JavaScript

"use strict";
import {Common} from "../Utils/Common.ecma.js";
/**
* @class WebSocketsDriver
* @constructor
* @param {!(Object.<string, any|null>|Array.<any|null>)} inputs
* @returns {void}
* @access public
* @static
*/
export const WebSocketsDriver = (function(){
/**
* @constructs WebSocketsDriver
* @param {!(Object.<string, any|null>|Array.<any|null>)} 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;
})();