MoonBit 实现的 MQTT 3.1.1 客户端,编译为 JS,在浏览器里经 WebSocket(子协议 mqtt)连公共 EMQX broker。
broker.emqx.io:8084(WebSocket + 子协议 mqtt,clean_session=false,每次刷新生成随机 client_id moon-demo-xxxxxx)。sensors/#,QoS1。sensors/hello 发一条 QoS1 消息(payload hi,2 字节)——先订阅后发布,保证能在消息列表里看到自己收到的那条。点「强制断开(测试重连)」可以随时手动制造断线,看状态行从「已连接」→「重连中」→「已连接」的完整过程。公共 broker 偶尔限流或超时,刷新页面即可重试。
sensors/hello,随后经订阅回传到这里。[demo] client_id=… → [browser] connecting to … → [demo] connected, subscribing sensors/# QoS1 → [demo] suback, publishing QoS1 sensors/hello。sensors/hello,payload hi,2 字节(这是 broker 回投给自己订阅的那条)。[browser] reconnect attempt #1 in 1s,状态行变「重连中」,约 1 秒后重新 CONNECT 并再次订阅。./browser-demo.js,所以 GitHub Pages 直接打开也能跑。