MQTT 与 Socket.IO 关于网络带宽使用的比较

1 socket.io mqtt

我每秒钟都需要解决方案上游的大量数据。通过无线 (WiFi) 或以太网每秒 200kBytes。

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

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

MBe*_*Ber 7

Socket.io同时做几件事。这个答案重点关注您对底层协议 WebSockets 的注释,尽管您当然可以在没有 Socket.io 的情况下使用这些协议。

WebSocket 与 MQTT 是同类比较,因为两者都可以单独工作或一起工作。MQTT 可以单独工作,作为 HTTP 的替代方案。WebSockets 是 HTTP 之上的附加协议,可以保持长时间运行的连接打开,以便可以长时间发送消息流,而无需为每个请求建立新连接。该连接可以承载 MQTT 或非 MQTT 数据(例如 JSON 对象),并具有提供消息按顺序到达的可靠双向链接的优点。

由于不同的原因,MQTT 的开销也较少:它采用发布-订阅模型(Pub-Sub 模型)设计,并针对通过狭窄、缓慢或不可靠的连接传输数据进行了优化。尽管它省略了 HTTP 消息附带的许多标头,转而采用一些密集编码的字节,但真正的区别在于传送速度。对于受限嵌入式设备来说,这是首选,尽管它们通常发送小消息并试图节省数据/处理/功率。

所以他们有不同的优势,甚至可以结合起来。MQTT-via-WebSockets 是在 webapp 中使用 MQTT 的常见方法,尽管普通 MQTT 是低端设备中的标准(无论如何可能很难发送那么多数据)。我建议使用 MQTT 从设备发送到服务器,或者使用 WebSockets-MQTT 在浏览器中快速接收设备数据或确保高速发送的消息的顺序。一个重要的例外是流式传输 - 只有关于 MQTT 的孤立报告,而 Socket.io 将其报告为首要功能。平衡将取决于两端的系统以及涉及的图表类型。