123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- const callbacks = {
- general: {
- temp: [],
- persist: []
- },
- onConnect: {
- temp: [],
- persist: []
- },
- onDisconnect: {
- temp: [],
- persist: []
- },
- onConnectError: {
- temp: [],
- persist: []
- }
- };
- export default {
- ready: false,
- socket: null,
- getSocket(...args) {
- if (args[0] === true) {
- if (this.ready) args[1](this.socket);
- else callbacks.general.persist.push(args[1]);
- } else if (this.ready) args[0](this.socket);
- else callbacks.general.temp.push(args[0]);
- },
- onConnect(...args) {
- if (args[0] === true) callbacks.onConnect.persist.push(args[1]);
- else callbacks.onConnect.temp.push(args[0]);
- },
- onDisconnect(...args) {
- if (args[0] === true) callbacks.onDisconnect.persist.push(args[1]);
- else callbacks.onDisconnect.temp.push(args[0]);
- },
- onConnectError(...args) {
- if (args[0] === true) callbacks.onDisconnect.persist.push(args[1]);
- else callbacks.onConnectError.temp.push(args[0]);
- },
- clear: () => {
- Object.keys(callbacks).forEach(type => {
- callbacks[type].temp = [];
- });
- },
- removeAllListeners() {
- Object.keys(this.socket._callbacks).forEach(id => {
- if (
- id.indexOf("$event:") !== -1 &&
- id.indexOf("$event:keep.") === -1
- )
- delete this.socket._callbacks[id];
- });
- },
- init(url) {
- const passcode = localStorage.getItem("passcode") || "";
- this.socket = window.socket = io(url, {
- query: `passcode=${passcode}`
- });
- this.socket.on("connect", () => {
- callbacks.onConnect.temp.forEach(cb => cb());
- callbacks.onConnect.persist.forEach(cb => cb());
- });
- this.socket.on("disconnect", () => {
- console.log("IO: SOCKET DISCONNECTED");
- callbacks.onDisconnect.temp.forEach(cb => cb());
- callbacks.onDisconnect.persist.forEach(cb => cb());
- });
- this.socket.on("connect_error", () => {
- console.log("IO: SOCKET CONNECT ERROR");
- callbacks.onConnectError.temp.forEach(cb => cb());
- callbacks.onConnectError.persist.forEach(cb => cb());
- });
- this.socket.on("error", err => {
- console.log("IO: SOCKET ERROR");
- if (err.type && err.type === "CONNECT_ERROR") {
- callbacks.onConnectError.temp.forEach(cb => cb());
- callbacks.onConnectError.persist.forEach(cb => cb());
- }
- });
- this.ready = true;
- callbacks.general.temp.forEach(callback => callback(this.socket));
- callbacks.general.persist.forEach(callback => callback(this.socket));
- callbacks.general.temp = [];
- callbacks.general.persist = [];
- }
- };
|