This commit is contained in:
LiJianZhao 2025-05-09 16:46:38 +08:00
parent ac01ae7507
commit 503b33ba3b
3 changed files with 37 additions and 5 deletions

View File

@ -9,7 +9,6 @@ const wsStore = useWsStore();
const isReading = ref(false) const isReading = ref(false)
const socialCard: any = defineModel(); const socialCard: any = defineModel();
const ReadSocialCard = async (readType: string) => { const ReadSocialCard = async (readType: string) => {
socialCard.value.lastUse = "CardDefault"
emit("changeLoading", true) emit("changeLoading", true)
isReading.value = true; isReading.value = true;
let config_db: any = await post('common/config/getall'); let config_db: any = await post('common/config/getall');
@ -35,9 +34,6 @@ const ReadSocialCard = async (readType: string) => {
}; };
const reciceMessage = (response: Response) => { const reciceMessage = (response: Response) => {
if (socialCard.value.lastUse != "CardDefault") {
return;
}
if (response.Code == 301) { if (response.Code == 301) {
let msg = response.Message; let msg = response.Message;
ElMessage({ ElMessage({
@ -63,6 +59,9 @@ const reciceMessage = (response: Response) => {
} }
getInfoFor1101(params) getInfoFor1101(params)
} }
const errorCallback = () => {
emit('changeLoading', false)
}
const emit = defineEmits(['socialCardUpdate', 'close', 'changeLoading']) const emit = defineEmits(['socialCardUpdate', 'close', 'changeLoading'])
const getInfoFor1101 = (params: any) => { const getInfoFor1101 = (params: any) => {
@ -97,10 +96,12 @@ const getInfoFor1101 = (params: any) => {
onMounted(async () => { onMounted(async () => {
wsStore.setMessageCallback(reciceMessage) wsStore.setMessageCallback(reciceMessage)
wsStore.setErrorCallback(errorCallback)
}); });
onUnmounted(() => { onUnmounted(() => {
emit('changeLoading', false) emit('changeLoading', false)
wsStore.removeAllMessageCallback() wsStore.removeAllMessageCallback()
wsStore.removeAllErrorCallback()
}) })
const close = () => { const close = () => {

View File

@ -1,5 +1,15 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { wsInit, wsSend, wsSetMessageCallback,wsRemoveMessageCallback,wsRemoveAllMessageCallback,wsClose, type Response, type Request } from '@/utils/ws'; import {
wsInit,
wsSend,
wsSetMessageCallback,
wsRemoveMessageCallback,
wsRemoveAllMessageCallback,
wsClose,
type Response,
type Request,
wsSetErrorCallback, wsRemoveAllErrorCallback
} from '@/utils/ws';
export const useWsStore = defineStore('ws', { export const useWsStore = defineStore('ws', {
state: () => ({ state: () => ({
@ -20,6 +30,14 @@ export const useWsStore = defineStore('ws', {
removeAllMessageCallback() { removeAllMessageCallback() {
wsRemoveAllMessageCallback(); wsRemoveAllMessageCallback();
}, },
setErrorCallback(onError: () => void){
wsSetErrorCallback(onError);
},
removeAllErrorCallback(){
wsRemoveAllErrorCallback() ;
},
sendMessage(request: Request) { sendMessage(request: Request) {
wsSend(request); wsSend(request);

View File

@ -4,6 +4,7 @@ let socket: WebSocket | null = null;
let reconnectAttempts = 0; // 重连次数计数器 let reconnectAttempts = 0; // 重连次数计数器
const reconnectInterval = 3000; // 重连间隔时间,单位毫秒 const reconnectInterval = 3000; // 重连间隔时间,单位毫秒
let onMessageList = [] as ((response: Response) => void)[]; let onMessageList = [] as ((response: Response) => void)[];
let onErrorList = [] as (() => void)[];
interface Response { interface Response {
Code: number; Code: number;
Message: string; Message: string;
@ -32,6 +33,9 @@ const wsInit = (finish: () => void) => {
// 监听错误事件 // 监听错误事件
socket.addEventListener('error', (event) => { socket.addEventListener('error', (event) => {
console.log('WebSocket连接失败'); console.log('WebSocket连接失败');
for(let i = 0; i < onErrorList.length; i++){
onErrorList[i]();
}
}); });
socket.addEventListener('message', (event) => { socket.addEventListener('message', (event) => {
console.log('收到服务器消息:', event.data); console.log('收到服务器消息:', event.data);
@ -73,6 +77,13 @@ const wsClose = () => {
} }
}; };
const wsSetErrorCallback=(onError: () => void)=>{
onErrorList.push(onError)
}
const wsRemoveAllErrorCallback=()=>{
onErrorList = [];
}
export { export {
wsInit, wsInit,
wsSetMessageCallback, wsSetMessageCallback,
@ -80,6 +91,8 @@ export {
wsRemoveMessageCallback, wsRemoveMessageCallback,
wsSend, wsSend,
wsClose, wsClose,
wsSetErrorCallback,
wsRemoveAllErrorCallback,
type Response, type Response,
type Request, type Request,
}; };