import store from '@/uni_modules/vrapile-im/store' import storage from '@/uni_modules/vrapile-im/utils/storage' import constant from '@/uni_modules/vrapile-im/utils/constant' import { formatDate } from '@/uni_modules/vrapile-im/utils/nineTool'; import { TioSocket, getChatKey } from '@/uni_modules/vrapile-im/utils/tiosocket'; // 外部需提供获取token函数并可以获取token import { getToken } from '@/utils/token' const socket = { state: { websocket: storage.get(constant.websocket), websocketData: storage.get(constant.websocketData) }, mutations: { // 存储登录链接 SET_SOCKET: (state, socket) => { state.websocket = socket; storage.set(constant.websocket, socket) }, // 添加socket消息 ADD_MESSAGE: (state, message) => { state.websocketData.push(message) storage.set(constant.websocketData, state.websocketData) // 添加消息 for(let i=0;i { // 删除未读消息 for(let i=0;i { let unReadNum = 0 for(let i=0;i 0){ uni.setTabBarBadge({ index: getApp().globalData.chatIndex, text: String(unReadNum), fail: (e) => { // console.log(e) } }) }else{ uni.removeTabBarBadge({ index: getApp().globalData.chatIndex, fail: (e) => { // console.log(e) } }) } }catch(e){ } }, // 清空消息 CLEAN_MESSAGE: (state, message) => { state.websocketData = new Array(); storage.set(constant.websocketData, new Array()) } }, actions: { // 连接websocket ConnSocket({ commit, state }, params) { return new Promise((resolve, reject) => { let url = import.meta.env.VITE_APP_SOCKET_URL; let heartbeatTimeout = 50000; // 心跳超时时间,单位:毫秒 let reconnInterval = 5000; // 重连间隔时间,单位:毫秒 let paramStr = "app="+import.meta.env.VITE_APP_FLAG+"&token=" + getToken(); let socket = new TioSocket(url, paramStr, heartbeatTimeout, reconnInterval); socket.connect(false); }) } } } export default socket