u
This commit is contained in:
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,
|
||||
|
||||
Reference in new issue
Block a user