This commit is contained in:
oneao committed 2025-12-29 17:31:10 +08:00
1 parent 00b21b6b44
commit 6fd3bf5138
41 files changed
+1183 -98

No files matched your search

@@ -1,6 +1,7 @@
import type { MessageRequest, MessageResponse } from '@/types/im'
import { readonly, ref } from 'vue'
import { MessageType } from '@/types/im'
import { useUserStore } from './user'
interface UseWebSocketOptions {
url: string
@@ -14,6 +15,7 @@ interface UseWebSocketOptions {
let singleton: ReturnType<typeof createWebSocket> | null = null
function createWebSocket(options?: Partial<UseWebSocketOptions>) {
const userStore = useUserStore()
/* ================== 配置 ================== */
const config: Required<UseWebSocketOptions> = {
url:
@@ -33,7 +35,7 @@ function createWebSocket(options?: Partial<UseWebSocketOptions>) {
const connected = ref(false)
const authenticated = ref(false)
let cachedToken: string | null = null
let cachedToken: string | null = userStore.token
let heartbeatTimer: number | null = null
let pongTimeoutTimer: number | null = null
@@ -75,6 +77,10 @@ function createWebSocket(options?: Partial<UseWebSocketOptions>) {
ws.onmessage = (evt) => {
const msg: MessageResponse = JSON.parse(evt.data)
console.log('===收到消息===')
console.log(msg)
handleMessage(msg)
}
@@ -178,7 +184,7 @@ function createWebSocket(options?: Partial<UseWebSocketOptions>) {
const msg: MessageRequest = {
type,
from: 0,
from: userStore.user.id,
to: to ?? null,
timestamp: Date.now(),
data: data ?? null,
@@ -196,15 +202,9 @@ function createWebSocket(options?: Partial<UseWebSocketOptions>) {
}
/* ================== 登录相关 ================== */
function setAuthToken(token: string | null) {
cachedToken = token
if (token && connected.value) {
login(token)
}
}
function login(token: string) {
console.log('触发login:', authenticated.value)
if (!connected.value || authenticated.value)
return
cachedToken = token
@@ -214,7 +214,6 @@ function createWebSocket(options?: Partial<UseWebSocketOptions>) {
function logout() {
cachedToken = null
authenticated.value = false
sendRaw(MessageType.LOGOUT)
}
/* ================== 消息处理(核心修改点) ================== */
@@ -264,7 +263,6 @@ function createWebSocket(options?: Partial<UseWebSocketOptions>) {
return {
connect,
close,
setAuthToken,
login,
logout,