import { TipsLayer } from "../../prefab/layer/TipsLayer"; import { Tips } from "../mgr/Tips"; import { WS, WsRequest, WsResponse } from "../net/WS"; export default class WsM { private static _ins: WsM; public static get ins(): WsM { return (WsM._ins ??= new WsM()); } public async syncRequest( protocolId: number, data: any, timeout: number = 8000 ): Promise { return new Promise((resolve, reject) => { let getData = false; let cb = (msg: WsResponse) => { getData = true; console.log("websocket msg", msg); WS.ins.off(protocolId, cb, cb); if (msg.success == true) { if (msg.data) { resolve(msg.data); } else { resolve({}); } } else { console.error(msg); Tips.show(msg.msg); resolve(null); } }; WS.ins.on(protocolId, cb, cb); WsRequest.create(protocolId).setData(data).send(); setTimeout(() => { // WS.ins.off(protocolId, cb, cb); // reject("timeout"); if (getData) { return; } WS.ins.reconnect(); TipsLayer.show({ title: "Hello", singleName: "timeout", content: "Welcome back!", forceConfirm: true, link: null, onConfirm: () => { // resolve(null); }, }); }, timeout); }); } }