1
This commit is contained in:
@@ -212,8 +212,13 @@ function getClientIdFromToken(token?: string) {
|
||||
try {
|
||||
const t = token || localStorage.getItem('token') || ''
|
||||
const payload = JSON.parse(atob(t.split('.')[1] || ''))
|
||||
return payload.clientId || ''
|
||||
} catch { return '' }
|
||||
const clientId = payload.clientId || ''
|
||||
console.log('从token解析clientId:', { token: t?.substring(0, 20) + '...', clientId })
|
||||
return clientId
|
||||
} catch (e) {
|
||||
console.warn('解析token中的clientId失败:', e)
|
||||
return ''
|
||||
}
|
||||
}
|
||||
|
||||
function getUsernameFromToken(token?: string) {
|
||||
@@ -247,14 +252,27 @@ const SSEManager = {
|
||||
const src = new EventSource(`${sseUrl}?clientId=${clientId}&token=${token}`)
|
||||
this.connection = src
|
||||
|
||||
console.log('SSE连接已建立:', sseUrl)
|
||||
src.onopen = () => console.log('SSE连接打开')
|
||||
console.log('SSE连接详情:', {
|
||||
url: sseUrl,
|
||||
clientId,
|
||||
token: token.substring(0, 20) + '...',
|
||||
fullUrl: `${sseUrl}?clientId=${clientId}&token=${token.substring(0, 20)}...`
|
||||
})
|
||||
|
||||
src.onopen = () => {
|
||||
console.log('✅ SSE连接已成功打开')
|
||||
console.log('连接状态:', src.readyState) // 0=CONNECTING, 1=OPEN, 2=CLOSED
|
||||
}
|
||||
|
||||
src.onmessage = (e) => {
|
||||
console.log('SSE收到消息:', e.data)
|
||||
console.log('📨 SSE收到原始消息:', e)
|
||||
console.log('消息数据:', e.data)
|
||||
this.handleMessage(e)
|
||||
}
|
||||
|
||||
src.onerror = (e) => {
|
||||
console.log('SSE连接错误:', e)
|
||||
console.error('❌ SSE连接错误:', e)
|
||||
console.log('连接状态:', src.readyState)
|
||||
this.handleError()
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -265,17 +283,29 @@ const SSEManager = {
|
||||
handleMessage(e: MessageEvent) {
|
||||
try {
|
||||
const payload = JSON.parse(e.data)
|
||||
console.log('SSE消息解析:', payload)
|
||||
|
||||
switch (payload.type) {
|
||||
case 'DEVICE_REMOVED':
|
||||
console.log('收到设备移除事件,正在执行logout')
|
||||
logout()
|
||||
ElMessage.warning('您的设备已被移除,请重新登录')
|
||||
break
|
||||
case 'FORCE_LOGOUT':
|
||||
console.log('收到强制退出事件,正在执行logout')
|
||||
logout()
|
||||
ElMessage.warning('会话已失效,请重新登录')
|
||||
break
|
||||
case 'PERMISSIONS_UPDATED':
|
||||
console.log('收到权限更新事件,重新检查权限')
|
||||
checkAuth()
|
||||
break
|
||||
default:
|
||||
console.log('收到未知SSE事件:', payload.type)
|
||||
}
|
||||
} catch {}
|
||||
} catch (err) {
|
||||
console.error('SSE消息处理失败:', err)
|
||||
}
|
||||
},
|
||||
|
||||
handleError() {
|
||||
|
||||
Reference in New Issue
Block a user