【问题标题】:MQTT vs Socket.IO on Network bandwidth usageMQTT vs Socket.IO 关于网络带宽使用
【发布时间】:2019-03-04 18:42:17
【问题描述】:

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

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

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

【问题讨论】:

    标签: socket.io mqtt


    【解决方案1】:

    Socket.io does several things at once。这个答案的重点是你关于底层协议 WebSockets 的注释,当然你可以使用没有 Socket.io 的那些。

    WebSockets 与 MQTT 是一个从苹果到篮子的比较,因为两者都可以在没有另一个或一起工作的情况下工作。 MQTT 可以作为 HTTP 的替代方案单独工作。 WebSockets 是 HTTP 之上的附加协议,可以保持长时间运行的连接打开,从而可以长时间发送消息流,而无需为每个连接建立新的连接要求。该连接可以携带 MQTT 或非 MQTT 数据(如 JSON 对象),并具有提供消息按顺序到达的可靠双向链接的好处。

    MQTT 的开销也更少,原因不同:它采用 发布-订阅模型(Pub-Sub 模型) 设计,并针对通过狭窄、缓慢或不可靠的连接传递数据进行了优化。尽管它省略了许多伴随 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 将其报告为顶级功能。平衡将取决于两端都有什么系统以及所涉及的图表类型。

    【讨论】:

    • 没问题@DarrellSheley!它是否回答了您的问题,还是您需要进一步的解释?
    • 感谢您的帮助。那么,我无法比较 MQTT 与 Socket 在网络带宽使用方面的差异?
    • 如果您准确定义要发送的内容,则可以比较它们 - 例如“X 大小为 Y 的消息通过加密 MQTT 与身份验证与加密 Socket.io”。我没有关于结果的现成信息,这个答案主要解释了技术,这样你就可以确定你的要求并提出一个测试用例。
    • 如果我想通过慢速互联网网络(大约 100kbps)发送最大 5 kb 的消息并且同时触发大约 500-100 条消息怎么办。为此实施渠道的最佳方式是什么。 socket.io + mqtt 在这种情况下会有所帮助吗?如果是,是否有关于此类应用程序实施的博客或某种在线内容?
    • "[WebSockets] 可以同时承载 HTTP 和 MQTT" - 这是误导性的。 WebSockets 运行在 HTTP 之上。在 websocket 上运行 HTTP 会很奇怪。可能,当然,但我真的很难想象有人会这样做的原因。在 websocket 上运行 MQTT 确实有它的位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2021-07-27
    • 2013-04-06
    • 2016-03-21
    • 1970-01-01
    • 2017-11-26
    • 2022-01-22
    相关资源
    最近更新 更多