MQTT系列—(11)通过WebSockets 进行MQTT通信详解

目录

一、MQTT over WebSockets 是什么?

二、协议栈对比

三、连接建立流程(时序图)

四、WebSocket 握手过程

五、常见使用场景

六、优点与局限

七、示例:使用 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,实现实时推送。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

34号树洞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值