const url = "ws://80.155.0.82:8006/mosty-api/mosty-websocket/socket/"; //线上 import { getItem } from "@/utils/storage"; import { getUserInfoToId } from "@/api/user-manage"; class WebSoketClass { constructor(props) {} ws = null; static getInstance() { if (!this.ws) this.ws = new WebSoketClass(); return this.ws; } //关闭连接 static close() { this.ws.ws.close(); } // 创建连接 connect(fun) { let uuid = this.getUUid() let id = getItem("USERID"); getUserInfoToId(id).then((res) => { let sfzh = res.idEntityCard this.ws = new WebSocket(url + sfzh + '/' + uuid); this.ws.onopen = (e) => { fun(true);}; }); } // 心跳机制 heartCheck() { const _that = this; this.state = setInterval(() => { if (this.ws.readyState === 1) { this.ws.send("/heart"); } else { this.closeHandle(); //重新连接 } }, 6e3); } // 获取uuid getUUid() { var s = []; var hexDigits = "0123456789abcdefghijklmnopqrstuvwxyz"; for (var i = 0; i < 32; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); s[8] = s[13] = s[18] = s[23]; let uuid = s.join(""); return uuid } closeHandle() { if (this.state) { clearInterval(this.state); this.connect(); } else { } } // 接收发送消息 getMessage() { this.ws.onmessage = (e) => { if (e.data) { let newsDate = JSON.parse(e.data); this.newVal = newsDate; //接收的数据 } }; } } export default WebSoketClass;