safesight/control/docs/device-online-design.md
tian 98e375dc36 chore: 合并 safesight-control 仓库为 control/ 子目录
项目合并为单仓库:设备端(根) + 管理端(control/)。
两端 git 历史完整保留(git subtree 合并)。

git-subtree-dir: control
git-subtree-mainline: 923ab10d5c
git-subtree-split: 70738edb31
2026-08-02 11:13:26 +08:00

1.1 KiB
Raw Blame History

设备发现与在线状态设计原则

核心划分

机制 职责 使用场景
UDP 广播 (35688) 仅设备发现 扫描局域网、发现新设备、刷新设备列表
HTTP API (端口 9100) 判断设备是否可达 所有业务操作前确认设备在线
registry.Online 字段 仅用于 UI 展示 设备列表的在线/离线指示灯

禁止行为

  • 业务操作依赖 dev.Online 做准入判断
  • 在 HTTP 调用链中引用 dev.Online 跳过请求
  • 用 UDP 发现超时判断设备是否在线

正确做法

  • dev.Online 只在 UI 层展示在线/离线状态
  • 业务操作直接发起 HTTP 请求,由 HTTP 成功/失败判断可达性
  • UDP 搜索只在页面加载、手动刷新、设备列表时触发

设计理由

UDP 包可能在交换机上被丢弃,设备可能已通过 DHCP 换 IP广播可能被防火墙拦截。Online 字段只能作为近似的 UI 提示不能作为业务逻辑依据。HTTP 请求的真实结果才是唯一可靠的在线判断。