目录
七、示例:使用 MQTT.js 通过 WebSocket 连接
十、MQTT over WebSocket 通信机制完整时序图

前言:
MQTT非常适合设备受限和网络不稳定的情况,并且非常适合以极低的开销发送消息。当然,如果能够直接在浏览器中(例如在手机上)发送和接收MQTT消息,MQTT over WebSockets 使浏览器能够利用所有的MQTT功能。
示例:
-
显示来自设备或传感器的实时信息;
-
接收推送通知(例如,警报或危机情况警告);
-
使用LWT和保留消息查看设备的当前状态;
-
与移动网络应用程序进行有效沟通。
另外,通过 WebSockets 进行 MQTT 通信”是现代 IoT 平台(如 AWS IoT、阿里云 IoT、EMQX、Mosquitto、HiveMQ)常用的一种方式,用于在 浏览器、移动端 Web 应用 或 受限网络环境 下与 MQTT Broker 建立连接。
一、MQTT over WebSockets 是什么?
MQTT over WebSockets 指的是:
MQTT 协议的二进制数据通过 WebSocket 连接进行传输。
换句话说,它将原本基于 TCP 端口 1883 的 MQTT 协议,封装在 WebSocket 通道(端口 8083 / 443) 里传输,使得浏览器或 Web 客户端可以直接参与 MQTT 通信。
二、协议栈对比
| 层级 | 普通 MQTT | MQTT over WebSockets |
| 应用层 | MQTT 协议 | MQTT 协议 |
| 传输层 | TCP | WebSocket(基于 HTTP/HTTPS) |
| 网络层 | IP | IP |
| 端口 | 1883 / 8883 (SSL) | 8083 / 443 (wss) |
三、连接建立流程(时序图)

四、WebSocket 握手过程
当浏览器连接 Broker 时,会发送一个 WebSocket 握手请求:
GET /mqtt HTTP/1.1
Host: broker.example.com:8083
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: mqtt
Sec-WebSocket-Version: 13
Broker 返回响应:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: mqtt
之后就建立起了一个 WebSocket 通道,用于传输 MQTT 报文。
五、常见使用场景
| 场景 | 描述 |
| Web 控制台(前端) | 浏览器实时监控 IoT 设备状态(如温湿度、在线/离线状态)。 |
| Hybrid App / WebView | 移动端 Web 应用通过 WebSocket 接入 MQTT,实现实时推送。 |

通过WebSockets 进行MQTT通信详解&spm=1001.2101.3001.5002&articleId=154021816&d=1&t=3&u=6dd5f197fd3e4bf794b4aa5a67b87add)
191

被折叠的 条评论
为什么被折叠?



