Skip to content

[P3][performance] NodeDetailView 绕开 WebSocket 实时推送,使用 5s REST 轮询 #259

Description

@XiNian-dada

现状

web/src/views/NodeDetailView.vue:122-129 使用 5 秒 REST 轮询获取节点详情:

const pollInterval = setInterval(async () => {
  await fetchNodeDetail();
}, 5000);

这与 dashboard 的 WebSocket 实时推送是双轨架构:

  • Dashboard 通过 WS 接收 NodeUpsert 实时更新
  • 详情页绕开 WS,独立轮询 REST API

影响

  • 浪费 HTTP 请求(每个打开的详情页 12 req/min)
  • 数据不一致窗口:WS 推送与 REST 轮询之间最多 5s 延迟
  • 架构不统一,增加维护复杂度

建议

详情页改为 WS 实时 + REST 补历史

  1. 订阅 nodes store,从 NodeUpsert 消息实时获取 snapshot/latency/online
  2. REST 仅用于首次加载 + 补充历史数据(history endpoint)
  3. 删除 5s 轮询逻辑

验收

  • 详情页实时字段从 WS NodeUpsert 获取
  • REST 仅用于首次加载和历史图表
  • 删除 setInterval 轮询
  • 数据更新延迟 < 1s(与 dashboard 一致)
  • 前端测试通过

来源

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Nice to have / cleanupperformanceThroughput / latency / footprint

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions