moon-mqtt · 浏览器 Demo 入口

纯 MoonBit 实现的 MQTT 3.1.1 客户端(protocol / session / core + 浏览器胶水层), 编译成 JS 后在浏览器里通过 WebSocket 连接公共 EMQX broker。下面两个页面直接引用已构建好的 .js 产物,不需要本地构建。

Demo

浏览器 MQTT 客户端

连接 broker.emqx.io:8084,订阅 sensors/#,收到 SUBACK 后自动发一条 QoS1。带实时状态行、消息列表和完整控制台日志。

→ demo/
Spike

QoS2 + 自动重连

看 PUBLISH → PUBREC → PUBREL → PUBCOMP 四步握手,以及断线后 1 秒自动重连、重连后重新 CONNECT + 重新订阅的完整字节流。

→ demo/ws-spike.html

本地怎么跑

在仓库根目录起一个静态服务器,然后打开对应地址(不要直接双击 html:file:// 下不同浏览器对 WebSocket 的策略不一致)。

cd moon-mqtt
python -m http.server 8765
# 浏览器打开 http://127.0.0.1:8765/docs/demo/
# spike 页:http://127.0.0.1:8765/docs/demo/ws-spike.html

线上 demo(GitHub Pages,站点根为仓库根):https://duckweed-yhb.github.io/moon-mqtt/docs/demo/。本地开发时用上面的本地服务器地址。

重新构建产物

改了 MoonBit 源码后,在仓库根目录跑:

pwsh -File scripts/build-demo.ps1

脚本会依次构建 examples/browser-demo 与 examples/ws-spike,并把 JS 产物复制到 docs/demo/。

相关文档