MQTT vs Socket.IO 关于网络带宽使用

     2023-02-16     237

关键词:

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

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

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

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

【问题讨论】:

【参考方案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 bytes,real 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 确实有它的位置。

铜缆vs光缆

...真的会被光缆所全部代替吗?下面我们就来讲述一下关于铜缆和光缆的一些知识。铜缆的优势:       尽管在数据中心对更高带宽需求的情况下,光纤凭借着更高传输速率、更大带宽、更远传输距离等优点使 查看详情

关于mqtt,你需要了解这些

不论你是物联网领域的入门新手还是资深开发者,提起MQTT,你一定并不陌生。「万物互联」的根本作为物联网领域应用最广泛的协议,MQTT凭借以下优势完美解决了物联网设备通信中网络环境复杂且不可靠、内存和闪... 查看详情

socket.io vs RethinkDB changefeed

】socket.iovsRethinkDBchangefeed【英文标题】:【发布时间】:2015-08-1205:01:08【问题描述】:目前我正在使用没有RethinkDB的socket.io,如下所示:客户端向socket.io发出事件,socket.io接收事件,向其他各种客户端发出,并保存到数据库中以... 查看详情

无法使 socket.io 在 HTTPS 上工作

】无法使socket.io在HTTPS上工作【英文标题】:Can\'tmakesocket.ioworkonHTTPS【发布时间】:2018-03-2703:59:50【问题描述】:我正在使用简单的socket.io2.0.3服务器,没有express或任何类似的东西来在我的Laravel应用程序中运行简单的聊天功能。... 查看详情

如何使socket.io只连接一次

】如何使socket.io只连接一次【英文标题】:Howtomakesocket.ioonlyconnectonce【发布时间】:2020-10-1017:44:45【问题描述】:当我转到另一个屏幕或更新页面时,socket.io上会发出一个新连接。我希望当用户进入第一页时只连接一次并在其他... 查看详情

实时应用:Socket.io vs Pusherapp

】实时应用:Socket.iovsPusherapp【英文标题】:Realtimeapps:Socket.iovsPusherapp【发布时间】:2011-04-2200:58:51【问题描述】:在Socket.io和Pusherapp之间进行选择时,您会考虑哪些因素?重要的考虑因素包括:与现有系统(如rails/django)的集... 查看详情

socket.io:关于广播和最大连接的查询

】socket.io:关于广播和最大连接的查询【英文标题】:socket.io:Queriesaroundbroadcastingandmaxconnections【发布时间】:2018-02-0908:29:48【问题描述】:我是SocketIO开发的新手。我想知道它周围的以下内容:支持的并发OPEN套接字数量的最大... 查看详情

如何使 Socket.io 与 CapacitorJS 本机应用程序一起工作?

】如何使Socket.io与CapacitorJS本机应用程序一起工作?【英文标题】:HowtomakeSocket.ioworkwithaCapacitorJSnativeapp?【发布时间】:2022-01-0520:22:34【问题描述】:如何让Socket.io与适用于iOS或Android的CapacitorJS原生应用(甚至在模拟器上)一起... 查看详情

socket.io vs swr 用于更新实时内容

】socket.iovsswr用于更新实时内容【英文标题】:socket.iovsswrforupdatingreal-timecontent【发布时间】:2021-01-2218:38:03【问题描述】:我目前正在使用next.js构建一个Web应用程序,它需要跨设备实时更新,例如,如果有人加入了一个群组,... 查看详情

Node.Js + Socket.IO vs SignalR vs C# WebSocket 服务器

】Node.Js+Socket.IOvsSignalRvsC#WebSocket服务器【英文标题】:Node.Js+Socket.IOvsSignalRvsC#WebSocketServer【发布时间】:2012-03-0217:24:40【问题描述】:我目前有一个用.Net编写的TCP服务器应用程序,用于接收并向客户端提交消息。我正在考虑构... 查看详情

关于 socket.io 中的房间创建

】关于socket.io中的房间创建【英文标题】:Regardingtheroomscreationinsocket.io【发布时间】:2019-06-1314:29:45【问题描述】:我想创建一个房间,其中房间应该不区分大小写,这意味着房间a和房间A应该打开同一个房间或房间LOT和房间LOt... 查看详情

如何使 socket.io 在 pm2 集群模式下正常工作?

】如何使socket.io在pm2集群模式下正常工作?【英文标题】:Howtomakesocket.ioworkproperlywithpm2clustermode?【发布时间】:2019-10-0216:55:54【问题描述】:我一直在寻找各种解决方案,但是当我把它们放在一起时,看起来很混乱。我正在尝... 查看详情

无法使基本的 socket.io 发射与 Swift 一起工作

】无法使基本的socket.io发射与Swift一起工作【英文标题】:Unabletomakebasicsocket.ioemitworkwithSwift【发布时间】:2017-09-3019:28:15【问题描述】:我看过几个重叠的演示,但我无法让基本的发射工作。我收到与服务器文件的连接消息,但... 查看详情

mqtt基本介绍

...MQTT从诞生之初就是专为​​低带宽、高延迟或不可靠的网络​​而设计的。虽然历经几十年的更新和变化,这仍然是MQTT协议的核心特点MQTT特性MQTT协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,... 查看详情

使用 socket.io 广播网络摄像头?

】使用socket.io广播网络摄像头?【英文标题】:Broadcastwebcamwithsocket.io?【发布时间】:2014-08-1709:59:21【问题描述】:我可以使用以下代码从浏览器获取流:varsocket=io.connect(\'127.0.0.1:9000\');navigator.getUserMedia=navigator.getUserMedia||navigator... 查看详情

关于socket.io的知识点记录

...Yii2的影子,所以便更加的亲切了。再接着便接触到了websocket,而今天谈论的socket.io便是websocket的一个类库,说道这里了,我们先去了解下we 查看详情

本地网络上的 Socket.io/node.js?

】本地网络上的Socket.io/node.js?【英文标题】:Socket.io/node.jsonlocalnetwork?【发布时间】:2011-11-1921:53:15【问题描述】:我在同一个网络上有两台机器,分别是192.168.1.2和192.168.1.3。192.168.1.2=服务器/开发电脑192.168.1.3=客户端/浏览器... 查看详情

5g对mqtt有啥影响?

...到来,之前针对物联网行业采用的MQTT协议(解决不稳定网络环境)有什么改变?您好,MQTT在物联网应用中的主要优势有:1)可靠传输:MQTT可以保证消息可靠安全的传输,并可以与企业应用简易集成;2)消息推送:支持消息实... 查看详情