CRMEB/backend/public/admin/system_static/socket-CmGQJU3y.js
2026-10-22 10:04:43 +08:00

2 lines
1.3 KiB
JavaScript

import{J as c,M as p,g as m}from"./index-BzWqH73M.js";import{getWorkermanUrl as f}from"./api-BcFSY5nf.js";const e=p();let n=m("WS_CHAT_URL")||"";class l{constructor(t){this.ws=null,this.opt=t||{},this.init()}onOpen(){this.opt.open&&this.opt.open(),this.ping(),this.socketStatus=!0}init(){n&&(this.ws=new WebSocket(n),this.ws.onopen=this.onOpen.bind(this),this.ws.onerror=this.onError.bind(this),this.ws.onmessage=this.onMessage.bind(this),this.ws.onclose=this.onClose.bind(this))}ping(){const t=this;this.timer=setInterval(function(){t.send({type:"ping"})},1e4)}send(t){return new Promise((s,o)=>{try{this.ws.send(JSON.stringify(t)),s({status:!0})}catch{o({status:!1})}})}onMessage(t){this.opt.message&&this.opt.message(t)}onClose(){this.timer&&clearInterval(this.timer),this.opt.close&&this.opt.close()}onError(t){this.opt.error&&this.opt.error(t)}$on(t,s){if(Array.isArray(t)){t.forEach(o=>e.on(o,s));return}e.on(t,s)}$off(t,s){if(Array.isArray(t)){t.forEach(o=>e.off(o,s));return}e.off(t,s)}}async function w(){const r=await f();return n=r.data.chat,c("WS_CHAT_URL",r.data.chat),new Promise((t,s)=>{const o=new l({open(){t(o),e.emit("socket_open",2)},error(i){s(i)},message(i){const{type:a,data:h={}}=JSON.parse(i.data);e.emit(a,h)},close(i){e.emit("close",{e:i,key:2})}})})}const k=w();export{k as S};