iking-utils-pro
Version:
金合前端工具库
2 lines (1 loc) • 1.46 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("socket.io-client");const o=[];for(let e=0;e<=15;e++)o[e]=e.toString(16);const n={reconnectionDelayMax:1e4,reconnectionAttempts:1/0,autoConnect:!0,new:!1,forceNew:!1,query:{},path:""};window.socketMap=new Map;exports.useSocket=(t,c=n)=>{if("undefined"==typeof window)throw new Error("当前非浏览器环境,请在浏览器环境下使用useSocket");const r=window.socketMap,s=t+c.path,i=`[Iking-Utils] [${s}]`,l=()=>{Array.from(r.keys()).forEach((e=>{r.get(e)&&(r.get(e)?.close(),r.delete(e))}))};if(!c?.new&&r.has(s))return console.log(`[${i}] 从缓存中获取`),{socket:r.get(s),closeAll:l};const a=e.io(t,{...n,...c});return a.on("connect",(()=>{console.info(`[${i}] 已连接`)})),a.on("disconnect",(e=>{console.info(`[${i}] ${e}`)})),a.on("connect_error",(e=>{console.info(`[${i}] connect_error: `,e)})),a.on("connect_timeout",(e=>{console.info(`[${i}] connect_timeout: `,e)})),a.on("reconnect",(e=>{console.info(`[${i}] reconnect: `,e)})),a.on("reconnect_attempt",(e=>{console.info(`[${i}] reconnect_attempt: `,e)})),a.on("reconnecting",(e=>{console.info(`[${i}] reconnecting: `,e)})),a.on("ping",(e=>{console.info(`[${i}] ping: `,e)})),r.has(t)?r.set(`${t}__${function(){let e="";for(let n=1;n<=36;n++)e+=9===n||14===n||19===n||24===n?"-":15===n?4:20===n?o[4*Math.random()|8]:o[16*Math.random()|0];return e.replace(/-/g,"")}()}`,a):r.set(t,a),{socket:a,closeAll:l}};