This commit is contained in:
2025-09-22 15:18:19 +08:00
parent c77f85ac95
commit c1356fa7ab

View File

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