dev-classes
Version:
<h3 align="center">SocketApi</h3>
134 lines (133 loc) • 5.7 kB
JavaScript
var w = Object.defineProperty;
var C = (i, e, s) => e in i ? w(i, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : i[e] = s;
var n = (i, e, s) => (C(i, typeof e != "symbol" ? e + "" : e, s), s);
var f = (i, e, s) => {
if (e.has(i))
throw TypeError("Cannot add the same private member more than once");
e instanceof WeakSet ? e.add(i) : e.set(i, s);
};
import { DelaysPromise as R } from "../DelaysPromise/DelaysPromise.js";
import { NetworkInformationCordova as d } from "../Utils/NetworkInformation/classes/NetworkInformationCordova.js";
import { NetworkInformationPC as v } from "../Utils/NetworkInformation/classes/NetworkInformationPC.js";
import { EventSubscribers as g } from "../Utils/EventSubscribers/EventSubscribers.js";
import { NetworkInformation as O } from "../Utils/NetworkInformation/NetworkInformation.js";
import { WsApi as S } from "./deps/WsApi/WsApi.js";
const I = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
function m(i) {
return I.test(i);
}
function u() {
var i = URL.createObjectURL(new Blob()), e = i.toString();
return URL.revokeObjectURL(i), e.split(/[:\/]/g).pop().toLowerCase();
}
u.valid = m;
var r, A;
const t = class t {
static copyState(e) {
return JSON.parse(JSON.stringify(e));
}
static setState(e) {
t.state = { ...t.state, ...e };
}
static resetState() {
t.state = t.copyState(t.stateDefault);
}
static setOptions(e) {
t.options = { ...t.options, ...e };
}
static setStatusReConnect(e) {
t.setState({ isActiveReConnect: e }), t.events.publish("reConnect", e);
}
static connect() {
t.wsApi.getIsInitWS() && (console.log("CONNECT WS"), t.setState({ isDisconnect: !1 }), t.wsApi.connect());
}
static disconnect() {
t.state.isDisconnect || (t.setState({ isDisconnect: !0 }), console.log("DISCONNECT WS"), t.wsApi.disconnect(), t.resetState());
}
static send(e, s) {
const { action: o, ...c } = e, a = u();
t.wsApi.setRequestSave({
reqId: a,
payload: { action: o, ...c },
cb: s
});
const l = t.wsApi.getSocket();
if (!l || l.readyState !== 1) {
console.log("Нет подключения к сокету");
return;
}
t.wsApi.send(JSON.stringify(e));
}
static stopReConnect(e) {
console.dir("функция stop не присвоена к stopReConnect");
}
};
r = new WeakSet(), A = function() {
}, f(t, r), n(t, "state", {
isDisconnect: !0,
isActiveReConnect: !1,
isOfflineSocket: !0,
isReady: !1,
isNetworkStatus: navigator.onLine
}), n(t, "options", {
isReConnectNetworkOnline: !1
}), n(t, "wsApi", new S()), n(t, "delay", new R()), n(t, "internet", new O([new v(), new d()])), n(t, "events", new g(["timeOffReConnect", "reConnect"])), n(t, "saveID", {
idReConnect: null,
checkConnect: null
}), n(t, "stateDefault", t.copyState(t.state)), n(t, "setInfoConnect", (e) => {
e.status || t.close(), t.setState({ isOfflineSocket: !e.status }), t.events.publish("timeOffReConnect", e), t.setStatusReConnect(!1);
}), n(t, "online", () => {
t.setState({ isNetworkStatus: !0 }), !t.state.isActiveReConnect && t.options.isReConnectNetworkOnline && t.socketReConnect();
}), n(t, "offline", () => {
t.setState({ isNetworkStatus: !1 }), t.state.isActiveReConnect && t.stopReConnect(!1);
}), n(t, "splitOptions", (e) => Object.entries(e).reduce(
(s, [o, c]) => {
const a = t.wsApi.getOptions();
return o in a ? { ...s, WsOptions: { ...s.WsOptions, [o]: c } } : { ...s, SocketApiOptions: { ...s.SocketApiOptions, [o]: c } };
},
{ WsOptions: {}, SocketApiOptions: {} }
)), /*---------------------------------------------------------------------------------------------------------------------------*/
n(t, "getState", () => t.state), n(t, "on", (e, s) => {
t.wsApi.getRegisteredEvents().includes(e) ? t.wsApi.on(e, s) : t.events.subscribe(e, s);
}), n(t, "off", (e, s) => {
t.wsApi.getRegisteredEvents().includes(e) ? t.wsApi.off(e, s) : t.events.unsubscribe(e, s);
}), // static getRequestSave = SocketApi.wsApi.getRequestSave;
n(t, "getStatusSocket", t.wsApi.getStatusSocket), n(t, "close", () => {
t.state.isActiveReConnect ? t.stopReConnect(!1) : t.wsApi.close();
}), n(t, "init", (e) => {
const { WsOptions: s, SocketApiOptions: o } = t.splitOptions(e);
t.internet.run((c) => {
c ? t.online() : t.offline();
}), t.setOptions(o), t.wsApi.init(s);
}), /*------------------------------------------------------------------------------------------------------*/
// useEffect(() => {
// if((isReConnectSocket && (!isNetworkStatus || statusWS === 'ready'))){
// SocketApi.stopReConnect();
// }
// },[isReConnectSocket, isNetworkStatus, statusWS]);
n(t, "socketReConnect", () => {
if (t.wsApi.getIsInitWS())
if (console.log("reconnect"), t.saveID.idReConnect)
console.groupCollapsed("Процесс socketReConnect уже запущен"), console.log("SocketApi.saveID: ", t.saveID), console.groupEnd();
else {
t.setStatusReConnect(!0), t.connect();
const { timeReConnect: e, numberOfRepit: s } = t.wsApi.getOptions();
t.delay.startActionEvery(
() => (console.log("reconnect:>>delay"), t.wsApi.getStatusSocket() === "ready" ? (console.dir("Подключение установлено"), !0) : (t.connect(), !1)),
{
interval: e,
countAction: s,
watchIdInterval: (o) => {
t.saveID.idReConnect = o;
},
controlAction: ({ stop: o, getIsActiveEvent: c }) => {
t.stopReConnect = o;
}
}
).then(t.setInfoConnect).catch(t.setInfoConnect);
}
});
let p = t;
export {
p as SocketApi
};