diff --git a/src/components/RemoteControlApp.tsx b/src/components/RemoteControlApp.tsx index d6ce18b..6496f33 100644 --- a/src/components/RemoteControlApp.tsx +++ b/src/components/RemoteControlApp.tsx @@ -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) => { console.log('设备已连接:', device) dispatch(addDevice(device)) @@ -306,9 +319,19 @@ const RemoteControlApp: React.FC = () => { })) }) - socket.on('device_disconnected', (deviceId) => { - console.log('设备已断开:', deviceId) - dispatch(removeDevice(deviceId)) + socket.on('device_disconnected', (data) => { + // 兼容两种格式: 字符串deviceId 或 对象{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({ type: 'info', title: '设备已断开',