MQTT 和 MQTT over web socket 之间的技术区别是什么,允许后者成为 web 浏览器应用程序的首选?

物联网 MQTT 网络套接字
2021-06-04 10:49:35

我是这个物联网协议领域的新手。我的理解是 MQTT 是一种用于物联网设备的轻量级消息传递协议。

Web 套接字上的 MQTT 涉及使用 HTTP 来升级连接以使用 Web 套接字。否则,它们遵循相同的数据交换协议。

两者都位于 TCP 层的顶部。

两者都支持持久连接。

两者都支持发布/订阅模型。

两者之间的用例差异据说是当客户端是浏览器时,MQTT over web socket 是理想的选择,因为很难在浏览器中实现 MQTT(但这可以通过使用 Socket API 来实现)。

那么 MQTT 和基于 Web 套接字的 MQTT 之间的技术区别究竟是什么,允许 Web 浏览器应用程序首选后者?

1个回答

没什么,正如我在 Stack Overflow 上回答中所说的那样,它们是逐字节完全相同的协议,只是传输层从原始 TCP 更改为 Websocket。

不同之处在于您不能从浏览器中打开原始套接字,安全沙箱不允许您打开到随机主机的任意 TCP 连接。沙箱将只允许基于 HTTP 的协议,其中包括 WebSockets,因为它们从初始 HTTP 请求引导。

MQTT 相对于 Websockets 的另一个好处是,如果需要,它可以利用现有的代理基础设施。