92 lines
2.4 KiB
JavaScript
92 lines
2.4 KiB
JavaScript
"use strict";
|
|
|
|
import {Event} from "../Application/Event.ecma.js";
|
|
import {Check} from "../Utils/Checks.ecma.js";
|
|
import {Common} from "../Utils/Common.ecma.js";
|
|
|
|
/**
|
|
* @typedef {import("../Application/AnP.ecma.js").AnP} AnP
|
|
*/
|
|
|
|
export const WebSocketClientModel = (function(){
|
|
|
|
const WebSocketClientModel = function(anp, inputs){
|
|
|
|
const self = this;
|
|
let web_socket = null,
|
|
url = null,
|
|
id = null;
|
|
|
|
this.on_open = new Event();
|
|
this.on_message = new Event();
|
|
this.on_close = new Event();
|
|
this.on_error = new Event();
|
|
|
|
const constructor = () => {
|
|
|
|
Check.is_string(inputs) && (inputs = {url : inputs});
|
|
|
|
web_socket = new WebSocket(url = Common.get_value("url", inputs, ""));
|
|
|
|
web_socket.onopen = self.on_open.execute;
|
|
web_socket.onmessage = self.on_message.execute;
|
|
web_socket.onclose = self.on_close.execute;
|
|
web_socket.onerror = self.on_error.execute;
|
|
|
|
// self.on_open.add(opened);
|
|
self.on_message.add(reveive_message);
|
|
self.on_close.add(closed);
|
|
self.on_error.add(error);
|
|
|
|
};
|
|
|
|
// const opened = event => {
|
|
// self.send("web_socket_client", "get_id", null, 200);
|
|
// };
|
|
|
|
const reveive_message = event => {
|
|
console.log(event);
|
|
|
|
const data = Common.data_decode(event.data);
|
|
|
|
switch(data.controller + "." + data.method){
|
|
case "web_socket_client.set_id":
|
|
id = data.data;
|
|
break;
|
|
default:
|
|
anp.controllers.execute(data.controller, data.method, data.data, data);
|
|
break;
|
|
};
|
|
|
|
};
|
|
|
|
this.send = (controller, method, data, code = 200) => {
|
|
web_socket.send(Common.data_encode({
|
|
ok : code >= 200 && code < 300,
|
|
code : code,
|
|
id : id,
|
|
controller : controller,
|
|
method : method,
|
|
data : data
|
|
}));
|
|
};
|
|
|
|
this.close = () => {
|
|
web_socket.close();
|
|
};
|
|
|
|
const closed = event => {
|
|
id = null;
|
|
};
|
|
|
|
const error = event => {
|
|
console.error(event);
|
|
self.close();
|
|
};
|
|
|
|
constructor();
|
|
|
|
};
|
|
|
|
return WebSocketClientModel;
|
|
})(); |