import { useUserStore } from "@/stores/user" import { useChatStore } from "@/stores/chat" export function useWebSocket() { const userStore = useUserStore() const chatStore = useChatStore() const connectWebSocket = () => { try { chatStore.connectionStatus = "connecting" const wsUrl = "ws://localhost:12080/ws" console.log("连接WebSocket:", wsUrl) chatStore.socket = new WebSocket(wsUrl) chatStore.socket.onopen = () => { console.log("WebSocket连接已建立") chatStore.connectionStatus = "connected" // 发送绑定请求 if (userStore.currentUser) { const bindMsg = { request_type: "bind", sender_user_id: userStore.currentUser.id.toString(), } chatStore.socket.send(JSON.stringify(bindMsg)) } } chatStore.socket.onmessage = (event) => { try { const message = JSON.parse(event.data) console.log("收到消息:", message) // 检查是否是系统消息 if (message.clientId) return chatStore.handleIncomingMessage(message, userStore.currentUser.id) } catch (e) { console.error("解析消息失败:", e) } } chatStore.socket.onclose = (event) => { console.log("WebSocket连接已关闭, 代码:", event.code, "原因:", event.reason) chatStore.connectionStatus = "disconnected" // 智能重连策略 if (event.code !== 1000) { setTimeout(() => { console.log("尝试重新连接WebSocket...") connectWebSocket() }, 3000) } } chatStore.socket.onerror = (error) => { console.error("WebSocket错误:", error) chatStore.connectionStatus = "disconnected" } } catch (error) { console.error("连接WebSocket失败:", error) chatStore.connectionStatus = "disconnected" } } const disconnectWebSocket = () => { if (chatStore.socket) { chatStore.socket.close() chatStore.socket = null } } return { connectWebSocket, disconnectWebSocket, } }