/* * @Author: ch * @Date: 2022-04-25 14:39:19 * @LastEditors: ch * @LastEditTime: 2022-04-26 16:28:01 * @Description: file content */ import store from "../store"; import {createUUID, formatDate} from '@/common/utils'; export const MsbWebSkt = uni.connectSocket({ url : `ws://192.168.10.92:8090/ws?client=${store.state.token}`, // url是websocket连接ip success: () => { console.log('websocket连接成功!') }, fail: e => { console.log('连接失败' + e) } }); MsbWebSkt.onClose(()=>{ console.log('WebSocket关闭...!') }) let sessionListFlag = false; MsbWebSkt.onMessage((res)=>{ const data = JSON.parse(res.data || {}); if(data.code === 200){ const ctx = data.content; switch(data.traceType){ // 会话列表 case 1 : sessionListFlag = true; // 来新消息先查会话列表是否一存在,存在则加消息数。不存在则向会话列表加一个会话框 ctx.sessionVOS.forEach(item => { item.lastMessage.createTimeStamp = formatDate(item.lastMessage.createTimeStamp, 'mm-dd hh:ii') item.lastMessage.payload = JSON.parse(item.lastMessage.payload || {}); let historyData = store.state.sessionData; let hisIndex = historyData.findIndex(i => i.id === item.id); if(hisIndex >= 0){ historyData[hisIndex].lastMessage = item.lastMessage; historyData[hisIndex].unreadCount++; store.commit('SET_SESSION_DATA', historyData); }else{ item.messageList = []; store.commit('SET_SESSION_DATA',[...historyData, item]); } }); // 消息总数 store.commit('SET_SESSION_MSG_COUNT', ctx.totalUnreadCount || 10); break; // 历史消息 case 2 : let newData = store.state.sessionData; const hisIdx = newData.findIndex(i => i.id === ctx[0].sessionId); ctx.forEach(item => { item.createTimeStamp = formatDate(item.createTimeStamp, 'mm-dd hh:ii') item.payload = JSON.parse(item.payload) }) newData[hisIdx].messageList = ctx.concat(newData[hisIdx].messageList); store.commit('SET_SESSION_DATA', newData); console.log(newData); break; // 会话消息 case 7 : // 没接到会话列表时接到的消息不做处理 if(!sessionListFlag){ break; } // ctx.forEach(item => { ctx.payload = JSON.parse(ctx.payload || {}); let historyData = store.state.sessionData; const hisIndex = historyData.findIndex(i => i.id === ctx.sessionId); store.commit('SET_SESSION_MSG_COUNT', store.state.sessionMsgCount + 1); if(hisIndex >= 0){ // 存在会话往现有会话增加一条消息 const curHisData = historyData[hisIndex]; curHisData.messageList = [ ...(curHisData.messageList || []), ctx] curHisData.unreadCount++; store.commit('SET_SESSION_DATA', historyData); }else{ // 会话列表不存在,则创建一个会话 store.commit('SET_SESSION_DATA',[...historyData, { fromAvatar : ctx.fromAvatar, fromId : ctx.fromId, fromNickname : ctx.fromNickname, id : ctx.id, lastMessage : ctx, messageList : [ctx], unreadCount : 1 }]); } // }); break; default : break; } } }) MsbWebSkt.onError(()=>{ console.log('WebSocket连接错误') })