Files
PC-202306242200\Administrator 1c24452b6c first commit
2026-03-28 23:10:55 +08:00

149 lines
3.5 KiB
JavaScript

import store from '@/store/index.js';
import config from '@/config'
export const init = () => {
if(!uni.getStorageSync('token')){
console.log('sok-未登录');
return
}else{
console.log('sok-登录');
}
var timeout = 10000;
var timeoutObj = null;
var timeAnt = 0
setInterval(() => {
timeAnt++
}, 1000)
openConnection()
function checkOpenSocket() {
uni.sendSocketMessage({
data: 'ping',
success: res => {
timeAnt = 0
return;
},
fail: err => {
// 未连接打开websocket连接
openConnection();
}
});
}
function openConnection() {
// 打开连接
// uni.closeSocket(); // 确保已经关闭后再重新打开
uni.connectSocket({
url: `wss://${config.sok}/ws/deviceUpMessage?token=${uni.getStorageSync('token')}`,
success(res) {
// console.log('连接成功 connectSocket=', res);
},
fail(err) {
// console.log('连接失败 connectSocket=', err);
}
});
uni.onSocketOpen(res => {
checkOpenSocket()
// console.log('连接成功');
});
uni.onSocketError(err => {
// console.log('连接失败');
});
onSocketMessage(); // 打开成功监听服务器返回的消息
}
// 打开成功监听服务器返回的消息
function onSocketMessage() {
// 消息
timeout = 10000;
timeoutObj = null;
uni.onSocketMessage(res => {
timeAnt = 0
getSocketMsg(res.data); // 监听到有新服务器消息
});
}
// 监听到有新服器消息
function getSocketMsg(data) {
console.log(data);
var obj;
let pages = getCurrentPages() //获取加载的页面
let currentPage = pages[pages.length - 1] //获取当前页面的对象
let url = currentPage.route //当前页面url
if (data !== 'pong') {
store.commit('setSokStatus', 1);
uni.hideLoading()
obj = JSON.parse(data)
store.commit('setCommand', obj.command);
store.commit('setDataObj', obj);
// 插枪状态
console.log(obj);
if (obj.insertStatus || obj.insertStatus === 0) {
store.commit('setInsertStatus', obj.insertStatus);
}
if (obj.command == 'startResult' && obj.result == '-1') {
uni.showModal({
title: '提示',
content: '启动失败,请重试',
showCancel: false,
confirmText: "确认",
success: () => {}
})
}
if (obj.command == 'startResult' && obj.result == '-2') {
uni.showModal({
title: '提示',
content: '启动超时,请重试',
showCancel: false,
confirmText: "确认",
success: () => {}
})
}
if (obj.command == 'startResult' && obj.result == '01') {
if (url != 'pageOrder/recharge/recharge') {
uni.navigateTo({
url: `/pageOrder/recharge/recharge?transactionNo=${obj.transactionNo}&type=order`
});
}
}
if (obj.command == 'transactionResult') {
if (url == 'pageOrder/recharge/recharge') {
uni.navigateBack()
}
}
}else{
// store.commit('setSokStatus', 0);
}
timeAnt = 0
reset(); // 检测心跳reset,防止长时间连接导致连接关闭
}
// 检测心跳reset
function reset() {
clearInterval(timeoutObj);
start(); // 启动心跳
}
// 启动心跳 start
function start() {
timeoutObj = setInterval(function() {
if (timeAnt > 10) {
// console.log('连接失败重新连接....');
openConnection();
return
}
uni.sendSocketMessage({
data: 'ping',
success: res => {
// console.log(res);
},
fail: err => {
// console.log('连接失败重新连接....');
openConnection();
}
});
}, timeout);
}
}