18 lines
946 B
Markdown
18 lines
946 B
Markdown
# 2026-06-11 工作日志
|
||
|
||
### 14. DeviceDataHandler 和 DeviceRegisterHandler 补充设备在线状态刷新
|
||
|
||
**问题**:之前只有 ACK 应答会调用 `refreshDeviceOnline()` 续期 Redis 中的设备在线状态。但设备只要上报电量或注册就证明在线,这两个场景没刷新在线缓存。后果:设备只上报数据不发 ACK 时,5 分钟后重试逻辑误判它为离线。
|
||
|
||
**修复**:
|
||
- `DeviceDataHandler.handle()` → 收到 `/publish/power` 后调用 `refreshDeviceOnline()`
|
||
- `DeviceRegisterHandler.handle()` → 注册后调用 `refreshDeviceOnline()`
|
||
- 两个 Handler 各自注入 `MqttProperties`,避免注入 `MqttCommandAckService` 引入新的循环依赖
|
||
|
||
**在线判定覆盖**(修复后):
|
||
| 触发方式 | 是否刷新在线状态 |
|
||
|---|---|
|
||
| 设备上报电量 `/publish/power` | ✅ 新增 |
|
||
| 设备注册 `/publish/register` | ✅ 新增 |
|
||
| ACK 应答 `/publish/ack` | ✅ 原有 |
|