仓库传感器详情页修改

首页修改
This commit is contained in:
2026-04-20 09:11:41 +08:00
parent d9b9a76ac1
commit b513a327bb
5 changed files with 428 additions and 28 deletions

View File

@@ -3,8 +3,8 @@ import { getToken } from '@/utils/auth'
let ws = null
let reconnectTimer = null
let manualClose = false
let currentOnMessage = null
let retryCount = 0
const subscribers = new Set()
const WS_PATH = '/ws'
const MAX_RECONNECT_DELAY = 30000
@@ -37,7 +37,10 @@ export function connectWs(onMessage) {
return
}
currentOnMessage = onMessage
if (typeof onMessage === 'function') {
subscribers.add(onMessage)
}
manualClose = false
clearReconnectTimer()
@@ -61,17 +64,23 @@ export function connectWs(onMessage) {
// Keep plain text messages as-is.
}
currentOnMessage && currentOnMessage(data, event)
subscribers.forEach((handler) => {
try {
handler(data, event)
} catch (error) {
console.error('[WebSocket] subscriber error', error)
}
})
}
ws.onclose = () => {
console.log('[WebSocket] closed')
ws = null
if (!manualClose) {
if (!manualClose && subscribers.size > 0) {
reconnectTimer = setTimeout(() => {
console.log('[WebSocket] reconnecting')
connectWs(currentOnMessage)
connectWs()
}, getReconnectDelay())
}
}
@@ -81,21 +90,42 @@ export function connectWs(onMessage) {
}
}
export function closeWs() {
export function closeWs(onMessage) {
if (typeof onMessage === 'function') {
subscribers.delete(onMessage)
} else {
subscribers.clear()
}
if (subscribers.size > 0) {
return
}
manualClose = true
retryCount = 0
clearReconnectTimer()
if (ws) {
ws.close()
ws = null
}
}
export function reconnectWs(onMessage) {
if (typeof onMessage === 'function') {
subscribers.add(onMessage)
}
manualClose = false
retryCount = 0
clearReconnectTimer()
if (ws) {
ws.close()
ws = null
}
}
export function reconnectWs(onMessage = currentOnMessage) {
closeWs()
manualClose = false
connectWs(onMessage)
connectWs()
}
export function sendWs(data) {