MQTT与Socket.IO的网络带宽使用情况

时间:2019-03-04 18:42:18

标签: socket.io mqtt

我需要每秒解决很多上游数据的问题。 通过无线(WiFi)或以太网,每秒200kBytes。

我选择了MQTT,因为它对于与需要较小代码占用和/或网络带宽非常宝贵的远程位置的连接非常有用。

在网络带宽使用方面,MQTT优于Socket.io吗? 或者,MQTT是实时上载/发布的良好解决方案。 MQTT可以用于与socket.io(WebSocket)相同的图表系统吗?

1 个答案:

答案 0 :(得分:0)

Socket.io does several things at once。该答案侧重于您对基础协议Protocool WebSocket的说明,尽管您当然可以在不使用Socket.io的情况下使用它们。

WebSockets与MQTT的比较是一目了然,因为它们在不同的层次上运行。 WebSockets位于下方,可以保持长期运行的连接打开,因此可以长时间发送消息流,而不必为每个请求建立新的连接。它可以同时承载HTTP和MQTT。

由于不同的原因,MQTT的开销也较小:它采用发布-订阅模型设计,并针对通过狭窄,缓慢或不可靠的连接传递数据进行了优化。尽管它省略了HTTP消息附带的许多标头,而倾向于a few densely-coded bytesreal difference is in speed of delivery。受限嵌入式设备的首选,尽管它们通常会发送小消息并试图节省数据/处理/功耗。

因此它们具有不同的优势,甚至可以结合在一起。 MQTT-via-WebSockets是使用MQTT inside a webapp的一种常用方法,尽管普通MQTT是低端设备中的规范(无论如何,它很难发送这么多数据)。我建议使用MQTT从设备发送到服务器,或者建议使用WebSockets-MQTT以便在浏览器中快速接收设备数据。一个重要的例外是流传输-仅通过MQTT对其进行了孤立的报告,而Socket.io将其报告为一项主要功能。余额将取决于您在两端都有哪些系统以及涉及哪种图表。