MQTT 调试 · 使用说明
一个给你私有调试空间的在线 MQTT 工具。注册一个「工作区」,你和你的设备、队友就能在这个隔离的空间里收发消息、联调——别的工作区看不到你,你也碰不到别人。
三步上手
- 连接:给调试空间起个工作区名 + 密码,点「连接」。首次自动创建,以后用同样的名字密码登录。
- 订阅 / 发布:本站工作区默认自动订阅
<工作区>/#,可取消自动监听;公共 broker 需要手动订阅。发布时立即显示主题、内容和等待确认状态,随后更新确认或失败结果。 - 接入你自己的客户端:把设备 / MQTTX / 代码用同一个工作区账号连进来,就能一边发一边在网页看。
收到应用消息需要订阅对应主题。网页记录自身连接的收发过程;设备自己的 CONNECT、PING 等控制报文不会被 broker 转发到网页。
查看收发数据与协议过程
实时日志按时间显示 SEND / RECV 应用消息、TX / RX 发出 / 收到的协议报文,以及 SYS / ERR 状态和错误。手机可用连接区的查看收发与协议日志按钮直接跳到日志。
默认开启协议报文,可以看到 CONNECT / CONNACK、SUBSCRIBE / SUBACK、PUBLISH、PUBACK 或 PUBREC / PUBREL / PUBCOMP、UNSUBSCRIBE / UNSUBACK,以及实际发生的 PINGREQ / PINGRESP。展开一条报文查看 messageId、主题、QoS、标记和数据预览;关闭该选项会隐藏报文行,重新开启仍能查看保留的记录。
QoS 0 没有发布确认报文;QoS 1 / 2 的确认只表示 broker 完成对应协议步骤,不代表设备已经处理消息。保活间隔为 60 秒,PING 不会在刚连接时立即出现。立即断开使用强制关闭连接,可能没有 DISCONNECT 报文。
CONNECT 展示客户端参数与是否提供密码,不显示密码值。消息显示实际字节数和最多 512 字节的 UTF-8 或 Hex 预览;日志保留最近 2000 条。
可按主题、内容或状态搜索日志,复制和保存 TXT 只包含当前匹配的记录(含折叠正文预览)。关闭协议报文后,隐藏的报文也不会进入 TXT。点击最新跳到末尾,不改变自动滚动开关。
全部 JSON包含页面保留的最近 2000 条日志预览、时间及类型,不受搜索或协议显示开关影响;不是完整载荷或原始抓包文件。
发布支持 UTF-8 文本和 Hex 字节,例如 01 02 ff 会发送三个字节,不会发送字面字符串;空消息允许发布。填入示例仅填输入,确认主题后再发送。输入框内可按 Ctrl / ⌘ + Enter 发布。
工作区检查、创建和客户端加载期间也可取消连接。取消会停止当前等待,并忽略迟到结果;若创建请求已由服务器执行,工作区可能已经创建,可用同一账号重新连接。
把你的设备 / 客户端接进来
都用同一个工作区账号(用户名 = 工作区名,密码 = 你设的密码),主题都在 <工作区>/ 下。
① 软件 / 网页 / MQTTX —— WebSocket
| 推荐(TLS 加密) | wss://lsw1234.top/ws(端口 443) |
|---|---|
| 明文备选 | ws://120.79.19.193/ws(端口 80,用户名 / 密码明文传输) |
| 用户名 / 密码 | 你的工作区名 / 密码 |
MQTTX:新建连接 → Protocol 选 wss,Host lsw1234.top,Port 443,Path /ws,填用户名密码即可。
② 硬件设备 —— 原生 TCP(端口 1884)
ESP32 / Arduino(PubSubClient):把 WS / PW 换成你的工作区名和密码。
WiFiClient net;
PubSubClient mqtt(net);
const char* WS = "myteam"; // 你的工作区名
const char* PW = "your-password"; // 你的密码
mqtt.setServer("120.79.19.193", 1884);
mqtt.connect("my-device-01", WS, PW); // 账号认证
mqtt.subscribe("myteam/cmd"); // 收指令
mqtt.publish("myteam/status", "online");// 发状态Python(paho-mqtt):
import paho.mqtt.client as mqtt
c = mqtt.Client()
c.username_pw_set("myteam", "your-password")
c.connect("120.79.19.193", 1884)
c.subscribe("myteam/cmd")
c.publish("myteam/status", "online")
c.loop_forever()原生 TCP(1884)适合走 TCP 的硬件设备;网页 / 浏览器 / 想免端口的客户端走 WebSocket(推荐 wss,443)。两者同一个工作区即可联调:设备发 → 网页实时看;网页发 → 设备收。
QoS 与 retain 是什么
QoS(服务质量)是消息的送达保证级别:
- 0 最多一次:发出去就不管,可能丢。最快,调试默认用这个。
- 1 至少一次:保证送到,但可能重复。
- 2 恰好一次:不丢不重,最慢、开销最大。
retain(保留消息):发布时勾上「保留」,broker 会把这条消息存在该主题上;之后才订阅的客户端,一连上就立刻收到这条「最后状态」(比如设备的最新在线状态)。不勾的话,消息只发给当下正在订阅的人。
工作区与隔离(放心用)
- 你的工作区是私有的:只能在
<工作区>/里收发,超出范围会被拒。 - 同一个工作区账号 = 一个团队:成员互相可见、可协作。
- 不同工作区互相隔离:看不到、也发不进对方的空间。
- 密码就是钥匙——别把工作区名 + 密码发给不相干的人。
- 本工具只在你的浏览器记住工作区名,不保存密码,所以换设备或重开后需要重新输入密码。
🔒 建议用 https 打开本站:连接与注册会自动走 wss:// 加密。若以 http 打开则为明文链路(用户名 / 密码明文传输),请勿使用与其它账号相同的密码。
常见问题
- 连上了但看不到任何消息?
- 先看 SUBACK 是否确认订阅。本站工作区默认监听
你的工作区/#;若取消自动监听或使用公共 broker,需要手动订阅。设备主题必须匹配订阅;网页只能看到 broker 转发给这个连接的消息。 - 设备连不上 1884?
- 确认用了工作区账号(不是匿名);主题在
你的工作区/下;网络能到120.79.19.193:1884。 - 提示「工作区名已被占用」?
- 换一个名字;如果本来就是你的,用正确密码直接登录即可。
- 消息会被别人看到吗?
- 只有用你工作区名 + 密码的人能看到。所以密码别乱发。
- 网页 https 打不开明文 broker?
- 浏览器规定 https 页面只能连
wss://。要测明文公共 broker,用http打开本工具。