← 返回目录
脚本加载中 … 最近一帧 — 已收 0 帧 最多重连 3 次

这个页面在跑什么

20 02 CONNACK
30 PUBLISH(收/发都存在)
40 02 PUBACK
50 02 PUBREC(QoS2 第 2 步)
62 02 PUBREL(QoS2 第 3 步)
70 02 PUBCOMP(QoS2 第 4 步)
90 03 SUBACK
D0 00 PINGRESP
产物只会自动执行一次,想从头再跑就整页刷新

控制台日志(console.log 全量截获) [spike] …

端到端证据(2026-10-22,Node 22 实测,供评委核对)

浏览器侧证据见 README「在线 demo」的无头 Chrome 日志与主页控制台;这里是 Node 侧的 QoS2 协议层记录。

QoS2 发布握手:

PUBLISH(pid=1) → broker 回 PUBREC(0x50 02 00 01)
             → core.feed() 自动产出 PUBREL(0x62 02 00 01)
             → broker 回 PUBCOMP(0x70 02 00 01)
             → 在途清空。全程无手写握手字节。

断线重连:

onclose → on_transport_close() → state = Disconnected
  → 1s 后 reconnect attempt #1 → 新 CONNECT → 新 CONNACK
  → 自动 SUBSCRIBE(pid=2) + QoS2 PUBLISH → 继续收 PUBLISH
  → 最多 3 次(pid 递增 1→2→3)
  1. 浏览器侧与 Node 侧跑的是同一套 MoonBit core,页面只是换了 WebSocket 宿主。
  2. 完整记录见仓库 docs/WS-SPIKE.md。