fix: 设备离线状态同步问题修复
- device_disconnected改为设置offline状态而非移除设备 - device_disconnected兼容字符串和对象两种数据格式 - 新增devices_list_refresh事件监听,每10秒全量同步设备列表 - 解决设备在线但Web端显示离线的根本问题
This commit is contained in:
@@ -290,6 +290,19 @@ const RemoteControlApp: React.FC = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 定期设备列表全量刷新(服务端每10秒推送)
|
||||||
|
socket.on('devices_list_refresh', (data) => {
|
||||||
|
if (!data?.devices || !Array.isArray(data.devices)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
data.devices.forEach((device: any) => {
|
||||||
|
if (!device?.id) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
dispatch(addDevice(device))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
socket.on('device_connected', (device) => {
|
socket.on('device_connected', (device) => {
|
||||||
console.log('设备已连接:', device)
|
console.log('设备已连接:', device)
|
||||||
dispatch(addDevice(device))
|
dispatch(addDevice(device))
|
||||||
@@ -306,9 +319,19 @@ const RemoteControlApp: React.FC = () => {
|
|||||||
}))
|
}))
|
||||||
})
|
})
|
||||||
|
|
||||||
socket.on('device_disconnected', (deviceId) => {
|
socket.on('device_disconnected', (data) => {
|
||||||
console.log('设备已断开:', deviceId)
|
// 兼容两种格式: 字符串deviceId 或 对象{deviceId}
|
||||||
dispatch(removeDevice(deviceId))
|
const deviceId = typeof data === 'string' ? data : data?.deviceId
|
||||||
|
if (!deviceId) {
|
||||||
|
console.error('[Device] device_disconnected: invalid data', data)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
console.log('[Device] disconnected:', deviceId)
|
||||||
|
// 将设备状态设为offline而不是移除,避免设备重连时丢失
|
||||||
|
dispatch(updateDeviceConnectionStatus({
|
||||||
|
deviceId,
|
||||||
|
status: 'offline'
|
||||||
|
}))
|
||||||
dispatch(addNotification({
|
dispatch(addNotification({
|
||||||
type: 'info',
|
type: 'info',
|
||||||
title: '设备已断开',
|
title: '设备已断开',
|
||||||
|
|||||||
Reference in New Issue
Block a user