白屏,首页,霸王餐,网络完善

This commit is contained in:
wwz
2025-03-27 14:41:50 +08:00
parent 98ce8b5544
commit 9094818ea1
11 changed files with 104 additions and 76 deletions

View File

@@ -28,6 +28,7 @@ const useWebSocket = (options = {}) => {
const initMessageSendAttempts = ref(0); //初始化连接多少次
const reconnectStartTime = ref(0); //新增:记录重连开始时间
const isPongReceived = ref(false)
const allowReconnect = ref(true); // 新增:控制是否允许重连
// 关闭现有连接并清理资源
const closeExistingConnection = () => {
if (socketTask.value) {
@@ -80,7 +81,7 @@ const useWebSocket = (options = {}) => {
},
fail: () => {
console.error('WebSocket 连接失败,尝试重连');
if (autoReconnect.value) {
if (autoReconnect.value && allowReconnect.value) {
handleReconnect();
}
}
@@ -98,6 +99,7 @@ const useWebSocket = (options = {}) => {
console.log('初始化正常,心跳响应正常');
// 清除重连定时器
clearTimeout(reconnectTimer.value);
allowReconnect.value = false
reconnectTimer.value = null;
}
@@ -108,7 +110,7 @@ const useWebSocket = (options = {}) => {
isConnected.value = false;
clearInterval(heartbeatTimer.value); // 停止心跳定时器
clearTimeout(reconnectTimer.value); // 清除重连定时器
if (res.code == '1006') {
if (res.code == '1006' && !allowReconnect.value) {
uni.showToast({
title: '网络异常,请重新扫码',
icon: 'none'
@@ -166,7 +168,7 @@ const useWebSocket = (options = {}) => {
console.error('心跳超时,未收到响应,尝试重连');
clearInterval(heartbeatTimer.value);
if (autoReconnect.value && reconnectAttempts.value <
maxReconnectAttempts) {
maxReconnectAttempts && allowReconnect.value) {
handleReconnect();
} else {
console.error('重连次数达到上限,停止重连和心跳');
@@ -197,7 +199,7 @@ const useWebSocket = (options = {}) => {
console.error('心跳消息发送失败,尝试重连');
clearInterval(heartbeatTimer.value);
if (autoReconnect.value && reconnectAttempts.value <
maxReconnectAttempts) {
maxReconnectAttempts && allowReconnect.value) {
handleReconnect();
} else {
console.error('重连次数达到上限,停止重连和心跳');
@@ -246,6 +248,11 @@ const useWebSocket = (options = {}) => {
return;
}
if (!allowReconnect.value) {
console.log('重连功能已关闭,不进行重连');
return;
}
if (reconnectAttempts.value < maxReconnectAttempts) {
reconnectAttempts.value++;
const reconnectInterval = initialReconnectInterval * Math.pow(2, reconnectAttempts.value - 1);