仓库传感器详情页修改
首页修改
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user