MQTT Part 11 基于WebSockets的MQTT

本文翻译自http://www.hivemq.com/blog/mqtt-essentials-special-mqtt-over-websockets

未经允许,不得转载

基于WebSockets的MQTT(MQTT over WebSockets)

我们已经学习了MQTT的基础内容,对于资源受限的设备和不可靠的网络环境来说,MQTT是个理想的通信协议。同时它产生的流量也很小。所以对于浏览器,手机或其他设备来说,用MQTT来收发数据也将是一个很好的选择。MQTT over WebSockets使这种构想成为可能。它使得浏览器可以利用MQTT的所有功能来服务于下列应用场景。

  • 显示设备或传感器的实时信息
  • 接受推送消息,例如一个警告或危险提示
  • 通过遗嘱和保留信息来查看设备当前状态
  • 通过手机或网页程序实现即时通信

从技术角度来看这意味着什么?

每个支持WebSockets的现代浏览器都可以成为一个完美的MQTT客户端,其可以实现我们之前提到的所有功能。例如心跳、遗嘱、QoS和保留消息都和原生MQTT一样工作。我们只需要一个支持MQTT over WebSockets的JavaScript库。我们还需要一个支持MQTT over WebSockets的broker。当然了,HiveMQ支持这些功能。

它如何工作?

WebSocket是一个支持浏览器和服务器双向通信的网络协议。它于2011年定型并且所有的现代浏览器都支持WebSockets。和MQTT相似,WebSockets也是基于TCP的。


当使用术语MQTT over WebSockets时,其代表着在网络传输时,一个MQTT消息,如CONNECT或PUBLISH消息被封装在一个或多个WebSocket数据帧中。之所以WebSockets适用于承载MQTT,是因为其通讯是双向的、有序的和无损的(这本质上是由于WebSockets也基于TCP)。为了通过WebSockets和MQTT的broker通信,broker必须支持原生的WebSockets。一些人也通过web服务来桥接WebSockets和MQTT,但是我们不推荐这样做。HiveMQ原生支持此功能,更多信息可以参见使用HiveMQ实现基于WebSockets的MQTT

为什么不直接使用MQTT?

现在浏览器还不支持直接用MQTT,主要是因为浏览器不支持最基本的TCP连接。以后这个会通过Socket API来实现,但目前只有极个别的浏览器支持此API。

开始使用

如果你想开始使用MQTT over WebSockets,这有几个较好的资源供你参考:

安全WebSockets

WebSockets支持TLS加密,HiveMQ也可以实现此功能,使用时候有一些需要注意的地方,我们已在用户手册中指明。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容