通过WebSocket直接MQTT与MQTT

Tak*_*aki 51 websocket mqtt

与直接MQTT相比,MQTT优于WebSocket的优点是什么?

我正在考虑在我的项目中使用MQTT,所以我想知道为什么有些人选择MQTT over WebSocket而不是直接MQTT.

har*_*llb 31

如果您打算直接从webapps(在页面中)发布/订阅消息,您应该只需要在websockets上运行MQTT.

基本上我会为所有东西运行纯MQTT,只有在你真正需要时才添加websockets.

对于所有非浏览器语言,MQTT客户端库仅使用本机MQTT.对于Javascript,有一个纯MQTT库和页面库中使用websockets的Paho.

编辑:防火墙隧道用例是在websockets上使用MQTT的正当理由,因为编写此答案更多的无web/JavaScript客户端库已添加支持


小智 20

使用MQTT而不是Websockets的两个主要原因(实际上意味着通过HTTP/HTTPS):

  • Web应用程序(在浏览器中运行的应用程序 - 例如用JavaScript编写)
  • 任何其他不想使用1883/8883端口并且想要通过HTTP/HTTPS的应用程序 - 这可能是因为防火墙被阻止的可能性较小(例如在公司网络中),因为大多数防火墙都会让HTTP流量通过

如果您不需要或担心上述情况,请使用"直接"MQTT:

  • 它效率更高
  • 对于使用"直接"MQTT的各种语言,有更多的客户端库

  • 说"哪个有效意味着通过HTTP/HTTPS"是不对的.Websockets是有利的,因为它们从根本上不使用HTTP/HTTPS和隐含的开销.阅读(HTML5 WebSocket:Web可扩展性的量子跃进)[http://websocket.org/quantum.html]了解所有细节. (5认同)

Dom*_*ier 17

如果某个网页是发送或接收MQTT客户端,则基于websockets的MQTT是完美的.

可以在此处找到MQTT相对于websockets的功能的一个很好的总结.


Sac*_*apa 15

MQTT是一种支持以下的协议:

  • 提供发布/订阅机制
  • 服务质量政策
  • 沟通开销最小
  • 专为窄带通信信道和
    受限设备而设计.

根据设备的不同,可以使用实施方案.

浏览器:它使用的websockets.Websocket为浏览器提供了建立全双工通信的能力.有Javascript库来实现MQTT功能,请参阅Eclipse Paho JavaScript Client

Android:它们是用Java编写的MQTT客户端库,用于在Android上开发应用程序.请参阅Eclipse Paho Android Service

所以这取决于将要使用此功能的设备.有关标准和规范,请访问MQTT 3.1.1版

希望这会有所帮助.

干杯!


Vas*_*sif 6

如果应用程序在仅允许443和80个流量的防火墙后面运行,则基于Web套接字的MQTT也很有用.而且,您无法控制防火墙的策略.

  • MQTT并没有阻止您使用443或80的功能,或者如果您使用TLS / DTLS(加密),您会遇到什么。我猜防火墙理论上可以阻止端口80上的非HTTP流量,但是如果您使用TLS,它将不知道它是HTTP,并且在极少数情况下您不想使用TLS来保护连接的设备 (2认同)