Tcp 为什么MQTT比WebSocket使用更少的电池;protobuf(或者它没有?)

Tcp 为什么MQTT比WebSocket使用更少的电池;protobuf(或者它没有?),tcp,websocket,mqtt,Tcp,Websocket,Mqtt,在使用MQTT服务器时,我突然想到一个问题:在我的情况下使用Protobuf+WebSocket是否更好 我正在制作一个即时通讯平台。。。clientA到服务器到数据库和clientB 将要发送的信息:会话ID和消息。当您在初始GET请求中包括HTTP头的大小,然后向服务器发出启动Websocket连接的升级请求时,总网络流量通常比打开MQTT连接和订阅主题的流量多几个数量级 通过网络发送数据使用无线电,无线电通过电池燃烧,因此发送的数据越多,燃烧的电池越多。使用MQTT,发送和接收的更多数据是

在使用MQTT服务器时,我突然想到一个问题:在我的情况下使用Protobuf+WebSocket是否更好

我正在制作一个即时通讯平台。。。clientA到服务器到数据库和clientB


将要发送的信息:会话ID和消息。

当您在初始GET请求中包括HTTP头的大小,然后向服务器发出启动Websocket连接的升级请求时,总网络流量通常比打开MQTT连接和订阅主题的流量多几个数量级

通过网络发送数据使用无线电,无线电通过电池燃烧,因此发送的数据越多,燃烧的电池越多。使用MQTT,发送和接收的更多数据是您的实际有效负载,而不是与协议相关的额外数据

当发送/接收到更多数据时,初始握手所造成的差异甚至会在更长更稳定的连接中消失,但对于移动应用程序来说,情况并非总是如此,当移动应用程序在蜂窝站点之间移动或在移动数据和WiFi之间切换时从4G移动到3G时,往往会更频繁地断开网络连接


Websockets比HTTP长轮询好得多,但在连接开始时仍会有较大的初始网络命中率。

MQTT with compression/protobuf=>best

MQTT=>好

通过HTTP压缩的WebSocket/protobuf=>ok

HTTP上的WebSocket=>so


只有在客户端使用类似JavaScript的东西时,或者如果您希望通过HTTP(例如,更容易地穿越防火墙)时,才使用WebSocket。

您没有提供足够的上下文来给出完整的答案,但我会尝试。mqtt是以纯文本传输的吗?您可以通过SSL进行mqtt。两者的SSL握手方式相同