Si白
Si白
发布于 2025-04-30 / 1 阅读
0
0

MQTT学习笔记

踩过的坑又踩一遍,留个笔记吧

浏览器原生不支持传统 MQTT 的 TCP 连接(比如 1883 端口),只能用 WebSocket 来通信。

  • 例如 ESP32 使用 PubSubClient 连接 mqtt://192.168.1.100:1883 是走 TCP 协议

  • 如果让它去连一个 protocol websockets 的端口(9001),就会失败!

所以某个客户端想用浏览器来收发信息需要服务器同时配置两个端口:

以Mosquitto mqtt为例:

# /etc/mosquitto/mosquitto.conf

# 默认 MQTT 端口(TCP)

listener 1883

protocol mqtt

# WebSocket 用于网页访问

listener 9001

protocol websockets

#保存后重启:
#sudo systemctl restart mosquitto

这样就可以各走各的,不冲突。

  • ESP32 连 1883

  • HTML 页面连 9001


评论