parent
0cf30a999f
commit
990cd56690
@ -0,0 +1,48 @@
|
|||||||
|
// /*
|
||||||
|
// * @Author: ch
|
||||||
|
// * @Date: 2022-05-18 15:21:10
|
||||||
|
// * @LastEditors: ch
|
||||||
|
// * @LastEditTime: 2022-05-18 17:24:37
|
||||||
|
// * @Description: file content
|
||||||
|
// */
|
||||||
|
// import { MsbSkt } from "../utils/webSkt";
|
||||||
|
// import { createUUID } from '@/common/utils';
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 系统消息心跳
|
||||||
|
// */
|
||||||
|
// export const ApiSktSysHeart = () => MsbSkt.send({
|
||||||
|
// traceId: createUUID(),
|
||||||
|
// traceType: '0',
|
||||||
|
// content: { text: "ping" }
|
||||||
|
// });
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 获取系统通知会话
|
||||||
|
// * @param {*} content
|
||||||
|
// */
|
||||||
|
// export const ApiSktSysGetSession = (content) => MsbSkt.send({
|
||||||
|
// traceId: createUUID(),
|
||||||
|
// traceType: '1',
|
||||||
|
// content
|
||||||
|
// });
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 获取系统消息历史消息
|
||||||
|
// * @param {*} content
|
||||||
|
// */
|
||||||
|
// export const ApiSktSysGetHistory = (content) => MsbSkt.send({
|
||||||
|
// traceId: createUUID(),
|
||||||
|
// traceType: '2',
|
||||||
|
// content
|
||||||
|
// });
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 系统消息已读
|
||||||
|
// * @param {*} content
|
||||||
|
// */
|
||||||
|
// export const ApiSktSysGetHistory = (content) => MsbSkt.send({
|
||||||
|
// traceId: createUUID(),
|
||||||
|
// traceType: '6',
|
||||||
|
// content
|
||||||
|
// });
|
@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
* @Author: ch
|
||||||
|
* @Date: 2022-05-18 15:27:02
|
||||||
|
* @LastEditors: ch
|
||||||
|
* @LastEditTime: 2022-05-19 15:50:12
|
||||||
|
* @Description: file content
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { MsbWebSktNew } from "../plugins/webSkt";
|
||||||
|
import { createUUID, formatDate } from '@/common/utils';
|
||||||
|
import store from "../store";
|
||||||
|
|
||||||
|
const MsbSkt = new MsbWebSktNew();
|
||||||
|
MsbSkt.use('onResponse', (data) => {
|
||||||
|
if (data.code !== 500) {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
return Promise.reject(data);
|
||||||
|
|
||||||
|
})
|
||||||
|
MsbSkt.use('onMessage', (data) => {
|
||||||
|
// 判断非服务端主动推送消息不做处理
|
||||||
|
if (data[MsbSkt.option.ioKey]) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
ctx = data.content;
|
||||||
|
ctx.payload = JSON.parse(ctx.payload || {});
|
||||||
|
ctx.createTimeStamp = formatDate(ctx.createTimeStamp || new Date(), 'mm-dd hh:ii')
|
||||||
|
let historyData = MsbSkt.data;
|
||||||
|
const hisIndex = historyData.findIndex(i => i.id === ctx.sessionId);
|
||||||
|
// 不在当前会话框则全局消息加1
|
||||||
|
// if(ctx.sessionId !== store.state.sessionMsgId){
|
||||||
|
// store.commit('SET_SESSION_MSG_COUNT', store.state.sessionMsgCount + 1);
|
||||||
|
// }
|
||||||
|
if(hisIndex >= 0){
|
||||||
|
// 存在会话往现有会话增加一条消息
|
||||||
|
const curHisData = historyData[hisIndex];
|
||||||
|
curHisData.messageList.push(ctx); //= [ ctx, ...(curHisData.messageList || [])]
|
||||||
|
// 不在当前会话框则会话框消息加1
|
||||||
|
// if(ctx.sessionId !== store.state.sessionMsgId){
|
||||||
|
// curHisData.unreadCount++;
|
||||||
|
// }
|
||||||
|
MsbSkt.data = historyData;
|
||||||
|
}else{
|
||||||
|
// 会话列表不存在,则创建一个会话
|
||||||
|
MsbSkt.data = [...historyData, {
|
||||||
|
fromAvatar : ctx.fromAvatar,
|
||||||
|
fromId : ctx.fromId,
|
||||||
|
fromNickname : ctx.fromNickname,
|
||||||
|
id : ctx.id,
|
||||||
|
lastMessage : ctx,
|
||||||
|
messageList : [ctx],
|
||||||
|
unreadCount : 1
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
store.commit('SET_SESSION_DATA',MsbSkt.data);
|
||||||
|
|
||||||
|
});
|
||||||
|
/**
|
||||||
|
* 初始化IM
|
||||||
|
*/
|
||||||
|
export const MsbSktInit = () => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const heart = () => {
|
||||||
|
setTimeout(async () => {
|
||||||
|
await MsbSkt.send({
|
||||||
|
traceId: createUUID(),
|
||||||
|
traceType: '0',
|
||||||
|
content: { text: "ping" }
|
||||||
|
});
|
||||||
|
heart();
|
||||||
|
},5000)
|
||||||
|
}
|
||||||
|
MsbSkt.connect({
|
||||||
|
// url : `wss://you-gateway.mashibing.com/ws?client=${store.state.token}&type=1`
|
||||||
|
url : `wss://k8s-horse-gateway.mashibing.cn/ws?client=${store.state.token}&type=1`, // url是websocket连接ip
|
||||||
|
|
||||||
|
}).then(() => {
|
||||||
|
heart();
|
||||||
|
resolve(MsbSkt);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 获取会话列表
|
||||||
|
* @param {*} params
|
||||||
|
*/
|
||||||
|
export const MsbSktGetSessionList = async (params) => {
|
||||||
|
let {content} = await MsbSkt.send({
|
||||||
|
traceId: createUUID(),
|
||||||
|
...params
|
||||||
|
});
|
||||||
|
content.sessionVOS.forEach(item => {
|
||||||
|
if (item.lastMessage) {
|
||||||
|
item.lastMessage.createTimeStamp = formatDate(item.lastMessage.createTimeStamp, 'mm-dd hh:ii')
|
||||||
|
item.lastMessage.payload = JSON.parse(item.lastMessage.payload || {});
|
||||||
|
}
|
||||||
|
let historyData = MsbSkt.data;
|
||||||
|
let hisIndex = historyData.findIndex(i => i.id === item.id);
|
||||||
|
if(hisIndex >= 0){
|
||||||
|
historyData[hisIndex].lastMessage = item.lastMessage;
|
||||||
|
historyData[hisIndex].unreadCount++;
|
||||||
|
MsbSkt.data = historyData
|
||||||
|
}else{
|
||||||
|
item.messageList = [];
|
||||||
|
MsbSkt.data = [...historyData, item];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 获取历史消息
|
||||||
|
*/
|
||||||
|
export const MsbSktGetHistoryMsg = async (params) => {
|
||||||
|
let { content } = await MsbSkt.send({
|
||||||
|
traceId: createUUID(),
|
||||||
|
traceType : 23,
|
||||||
|
...params
|
||||||
|
})
|
||||||
|
if(!content.length){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// ctx.reverse();
|
||||||
|
let newData = MsbSkt.data;
|
||||||
|
const hisIdx = newData.findIndex(i => i.id === content[0].sessionId);
|
||||||
|
content.forEach(item => {
|
||||||
|
item.createTimeStamp = formatDate(item.createTimeStamp, 'mm-dd hh:ii');
|
||||||
|
item.payload = JSON.parse(item.payload)
|
||||||
|
})
|
||||||
|
newData[hisIdx].messageList = newData[hisIdx].messageList.concat(content);
|
||||||
|
MsbSkt.data = newData;
|
||||||
|
store.commit('SET_SESSION_DATA', newData);
|
||||||
|
return Promise.resolve(content);
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 设置为已读
|
||||||
|
*/
|
||||||
|
export const MsbSktSetRead = async (params) => {
|
||||||
|
await MsbSkt.send({
|
||||||
|
traceId : createUUID(),
|
||||||
|
traceType : "6",
|
||||||
|
...params
|
||||||
|
});
|
||||||
|
// 计算页头消息数
|
||||||
|
MsbSkt.curSession.unreadCount = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 发送消息
|
||||||
|
*/
|
||||||
|
export const MsbSktSendMsg = async (params) => {
|
||||||
|
const { content } = await MsbSkt.send({
|
||||||
|
traceId: createUUID(),
|
||||||
|
traceType: 20,
|
||||||
|
...params
|
||||||
|
});
|
||||||
|
return Promise.resolve(content)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 主动创建会话
|
||||||
|
*/
|
||||||
|
export const MsbSktCreateSession = async (params) => {
|
||||||
|
const { content } = await MsbSkt.send({
|
||||||
|
traceId : createUUID(),
|
||||||
|
traceType : 21,
|
||||||
|
...params
|
||||||
|
});
|
||||||
|
let historyData = MsbSkt.data;
|
||||||
|
let curSession = historyData.find(i => i.id === content.id);
|
||||||
|
if (!curSession) {
|
||||||
|
curSession = {
|
||||||
|
...content,
|
||||||
|
unreadCount: 0,
|
||||||
|
messageList : []
|
||||||
|
}
|
||||||
|
MsbSkt.data = [...historyData, curSession];
|
||||||
|
}
|
||||||
|
MsbSkt.curSession = curSession;
|
||||||
|
store.commit('SET_SESSION_DATA',MsbSkt.data);
|
||||||
|
store.commit('SET_SESSION_MSG_ID',curSession.id);
|
||||||
|
return Promise.resolve(content);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in new issue