Skip to content

WebSocket、SSE 与断线恢复:练习答案 ​

WebSocket 心跳与重连 ​

连接状态必须由 CONNECTING → OPEN → CLOSING/CLOSED 驱动。答案实现应在 open 后启动心跳,close 或超时后清理定时器;重连采用指数退避并设置上限,避免服务恢复时所有客户端同一时刻打满连接。重复收到同一个消息 ID 时去重,不能把重连当作消息可靠投递。

SSE 事件帧 ​

SSE 以空行分隔事件,data: 可以出现多行,id: 用于下次连接的 Last-Event-ID。答案应展示“断线—带最后 ID 重连—只接收后续事件”的日志;若服务端返回非 2xx 或 Content-Type 不是 text/event-stream,应进入错误分支而不是继续解析普通文本。

断线恢复与幂等 ​

恢复请求必须带客户端游标或最后事件 ID。服务端无法保证从游标继续时,客户端要重新拉取快照,再应用游标之后的增量;写操作使用幂等键,避免重试导致重复创建。答案需说明网络恢复但身份令牌过期时的处理顺序:先刷新身份,再恢复订阅。

章节入口核对 ​

以下入口对应本章概览或综合练习,答案核对沿用本章各知识点的实现与日志。

用心记录每一步成长