import {getWssApiUrl} from "@/config/envApi"; import {getStorage} from "@/utils/storage"; import {getObjVal, getObjValue, isString} from "js-fast-way"; import {useAppStore} from "@/store"; import {isNullES} from "js-fast-way"; export default class HcSocket { static socketTask = null static timeID = null static isConnect = false static initSocket() { let _this = this; this.timeID = setInterval(() => { if (!_this.isConnect) { const { user_id } = getObjValue(getStorage('userInfo')) if (isNullES(user_id)) return false; _this.connectSocket(user_id) } else { clearInterval(_this.timeID) } }, 3000) } static connectSocket(user_id) { const _this = this, store = useAppStore(); this.socketTask = uni.connectSocket({ url: getWssApiUrl() + user_id, success: ()=> { console.log('socket 连接成功') }, fail: () => { console.log('socket 连接失败') } }); //连接已打开 this.socketTask.onOpen(function(res) { console.log('socket 连接已打开'); _this.isConnect = true const projectId = getStorage('projectId') const contractId = getStorage('contractId') _this.sendSocketMsg(`${projectId},${contractId}`) }) //连接失败 this.socketTask.onError(function(res) { console.log('socket 连接打开失败,请检查!'); }) //监听连接关闭 this.socketTask.onClose((e) => { console.log('socket 连接关闭!'); //进入重新连接 setTimeout(() => { _this.connectSocket(); }, 3000) }) //收到的消息 this.socketTask.onMessage(function({data}) { const countData = isString(data) ? JSON.parse(data) : {} if (getObjVal(countData)) { console.log('收到服务器内容:', countData); store.setMsgCountData(countData) } }); } //发送消息 static sendSocketMsg(msg) { this.socketTask.send({data: msg}); } }