Skip to content

Latest commit

 

History

History
68 lines (41 loc) · 3.25 KB

26.md

File metadata and controls

68 lines (41 loc) · 3.25 KB

26 · 检查持续连接

由 pnpm docs:lessons 生成。教学脚本在 src/data/network-state.json,合同补充在 scripts/generate-network-state.mjs。本页含教师参考答案。

目标与原理

理解 WebSocket、SSE 与消息状态。先修按 完整目录 的章节关系;基础操作、原理关系随本课讲解。

连接、事件类型、消息解析与界面更新是独立环节。

先建立边界

SSE 是服务端到客户端事件流,event 字段决定事件类型

再核对证据

WebSocket 是双向消息;握手 101 只证明升级成功

最后验证结果

检查 Messages / EventStream 中实际 payload,再检查处理分支

交互演示

对比轮询和持续连接时间线。模型不改变真实浏览器设置,不计为实战完成。

  1. 先预测一个条件变化的结果。
  2. 只改变一个条件,比较输入与输出。
  3. 将模型中的关系对应到真实 DevTools。

真实商城合同

症状:库存消息持续到达,页面仍显示旧值。

正常结果:SSE 或 WebSocket 消息中的 stock=3 更新到页面。

真实机制:SSE 自定义 inventory 事件;WebSocket 握手 101 与两条 JSON 消息。

  1. 从本课准备并打开独立商城;先打开 DevTools,再运行故障。
  2. 在 Network 分别筛选 EventStream 或 WS,查看连接状态和逐条消息。
  3. 本课两种配置分别使用真实 SSE 与 WebSocket;比较事件名、字段和页面值。
  4. 等待完整消息后再检查,关闭连接并重跑,区分连接故障和处理故障。
  5. 先保存证据,再应用针对性的对照;错误对照不会通过页面检查。
  6. 回到教程选择真实证据,完成独立挑战后写下排查与恢复步骤。

独立挑战与参考答案

区分连接、消息、解析和界面错误。新会话改变输入与故障配置,可能再次抽到同一类型;按实际证据判断。

配置 原因 证据 修复/验证
配置1 SSE 客户端监听了错误的事件类型 EventStream 中 event=inventory,onmessage 没有处理它 监听 inventory 自定义事件并解析 data
配置2 WebSocket 客户端读取了错误字段 Messages 有 stock,处理函数却读取 inventory 读取真实 stock 字段并更新页面
干扰项 只凭界面颜色判断 没有对应请求或存储证据 同时改变全部条件且不复测

分级提示

  1. 先区分实际请求、浏览器策略、存储与界面处理,记录第一次偏离的环节。
  2. 在 Network 分别筛选 EventStream 或 WS,查看连接状态和逐条消息。
  3. 比较两个候选解释:SSE 客户端监听了错误的事件类型;WebSocket 客户端读取了错误字段。保持其他输入一致再验证。

边界与恢复

流连接在两条消息或上限等待后关闭,pagehide 也清理;不把连接成功当成处理成功。

清理与会话约定见 共同合同。请在复盘写下条件、观察对象、实际值、根因、最小修改与恢复设置;将 HTTP 缓存、Cache Storage、内存状态分开。

官方参考。实测范围见 验收记录。