#wip(ecma): WebSocket Client.
This commit is contained in:
parent
db7b69ad45
commit
45b2597ab0
@ -1,15 +1,108 @@
|
|||||||
"use strict";
|
"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(){
|
export const WebSocketsDriver = (function(){
|
||||||
|
|
||||||
const WebSocketsDriver = function(anp){
|
/**
|
||||||
|
* @constructs WebSocketsDriver
|
||||||
|
* @param {!(Object.<string, any|null>|Array.<any|null>)} inputs
|
||||||
|
* @returns {void}
|
||||||
|
* @access private
|
||||||
|
* @static
|
||||||
|
*/
|
||||||
|
const WebSocketsDriver = function(inputs){
|
||||||
|
|
||||||
const self = this,
|
/** @type {WebSocketsDriver} */
|
||||||
clients = {};
|
const self = this;
|
||||||
let client_i = 0;
|
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 = () => {};
|
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();
|
constructor();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user