在 MQTT 和 MQTT over websocket 的情况下会发生啥?

Posted

技术标签:

【中文标题】在 MQTT 和 MQTT over websocket 的情况下会发生啥?【英文标题】:What happens under the hood in case of MQTT and MQTT over websocket?在 MQTT 和 MQTT over websocket 的情况下会发生什么? 【发布时间】:2020-10-07 12:39:09 【问题描述】:

对于每个请求,HTTP 和 Web 套接字都会进行 3 次握手,然后是请求/响应和终止(持久连接)。

与上面类似,我们有 MQTT 和 MQTT over websocket,它们都是基于 pub/sub 模型的。 MQTT 是物联网硬件的理想选择,因为证书和密钥可以安全地存储在硬件设备上。 MQTT over websocket 是移动/网络应用的理想选择。

在 MQTT 和 MQTT over websocket 的情况下,在握手/数据交换/TCP/UDP 方面会发生什么?

【问题讨论】:

【参考方案1】:

MQTT 和 MQTT over Websockets 完全没有区别。

使用 MQTT over Websockets 在传输层只有一个额外的部分。因此,一旦设置了 Websocket 连接,流经连接的实际字节对于本机 MQTT 和 Websocket 上的 MQTT 完全相同。

因此,您将获得 HTTP GET、UPGRADE 流,然后它直接与 MQTT Spec 中所述的 MQTT Connect 数据包一起进入

【讨论】:

您能否添加更多信息,例如 - 握手 - http 对每个请求都有 3 次握手。 MQTT 呢?我试图了解 MQTT 和 MQTT over websocket 在握手/数据交换方面与 HTTP 相比会发生什么? 没有握手,MQTT 有一个在客户端的整个生命周期内保持打开状态的单一持久连接。

以上是关于在 MQTT 和 MQTT over websocket 的情况下会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

[mqqt vs mqtt over web native in react native

mqtt使用WebSocket over TLS(wss)握手失败

NativeScript中的Paho MQTT

MQTT over Secure Websockets 套接字在一分钟后关闭 - RabbitMQ

MQTT over QUIC:下一代物联网标准协议为消息传输场景注入新动力

NanoMQ Newsletter 2022-06|规则引擎正式发布 & NanoSDK 支持 MQTT over QUIC