fix: 设备离线状态同步问题修复

- device_disconnected改为设置offline状态而非移除设备
- device_disconnected兼容字符串和对象两种数据格式
- 新增devices_list_refresh事件监听,每10秒全量同步设备列表
- 解决设备在线但Web端显示离线的根本问题
This commit is contained in:
wdvipa
2026-02-15 17:33:56 +08:00
parent 74062e2b19
commit e3c5767024

View File

@@ -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: '设备已断开',