emis-app/common/messageNotice/socket.js
2025-01-16 10:50:01 +08:00

108 lines
2.7 KiB
JavaScript

import { curEnvConf } from "@/common/env"
import { getCommonReqData } from "@/common/manageServer"
import { showToast, playAudio } from "@/common/untool"
import { audioTypeEnum } from "@/common/enum"
export const currentSocketTask = {
instance: null
}
export const createSocketMessage = ({ userInfo })=> {
const reConnectSock = ()=> {
console.log("reConnectSock 重试连接=====")
socketTask = null
createSocketMessage({ userInfo })
}
const url = curEnvConf.socketHost
let comReqData = getCommonReqData()
let socketTask = uni.connectSocket({
url: `${url}/ws/${userInfo?.userId}`,
// method: 'GET',
header: {
...comReqData.header,
},
success(res){
},
fail(err) {
console.error("connectSocket fail====", err)
setTimeout(reConnectSock, 3000)
}
})
currentSocketTask.instance = socketTask
socketTask.onError((err)=> {
console.log('socketTask.onError: ', err);
})
socketTask.onClose((res = {})=> {
// socketTask.connectSocket
console.log('socketTask.onClose: ', res);
// 正常关闭 不需重连
if(res.code != 1000) {
// 重连
setTimeout(reConnectSock, 3000)
}
// switch (res.code+''){
// case '1006':
// setTimeout(reConnectSock, 3000)
// break;
// default:
// break;
// }
})
socketTask.onOpen((res)=> {
console.log('socketTask.onOpen: ', res);
})
socketTask.onMessage(function (res) {
console.log('onSocketMessage 收到服务器内容:', res?.data);
try{
let data = JSON.parse(res.data)
createSysMessage(data)
}catch(e){
console.error("")
}
});
}
export const pushAddEventListenerInit = ()=> {
// #ifdef APP-PLUS
// 监听 消息栏的点击事件
plus.push.addEventListener('click', function(msg = {}){
// 分析msg.payload处理业务逻辑
console.log("push.addEventListener You clicked:", msg)
// {
// "__UUID__": "androidPushMsg96147834",
// "title": "测试消息c2",
// "appid": "__UNI__BCB0FB5",
// "content": "测试消息内容c2",
// "payload": {
// "clickPath": "/123123/123",
// "uid": 357,
// "title": "测试消息c2",
// "noticeId": 25,
// "content": "测试消息内容c2"
// }
// }
console.log("notice msg-- clickPath ", msg?.payload?.clickPath)
}, false );
// #endif
}
export const createSysMessage = (opt = {})=> {
showToast(`${opt.title} ${opt.content}`)
playAudio(audioTypeEnum.notifyTone)
// #ifdef APP-PLUS
let msgOpt = {
// cover: true,
when: Date.now(),
title: opt.title,
}
let msgBody = opt
console.log("plus.push.createMessage ======", {
content: opt.content, msgBody, msgOpt
})
plus.push.createMessage(opt.content, msgBody, msgOpt);
// #endif
}