MQTT连接耗电少

MQTT connection consumes less power

MQTT 声称在保持代理和客户端之间的连接打开时消耗更少的电量。我相信应用层不需要做任何特殊的事情来保持 TCP 连接,而 MQTT 是一个应用层协议。那么,MQTT在这方面是如何发挥作用的呢?

我认为 MQTT 被认为比 HTTP 功耗更低,主要是因为减少了传输的数据量,尤其是通过无线 link。

  1. MQTT 是二进制协议,因此开销较小
  2. 通过维护持久的 TCP 连接,避免了为每个已发布的数据项建立连接的开销

最大的节省是当客户端需要订阅消息时——等待远程系统向它发送数据。使用纯 HTTP,它需要某种轮询——消耗大量能量,即使在没有消息的情况下也是如此。使用 MQTT,可以通过打开的 TCP 连接将消息推送到客户端。

虽然还有很多其他协议也允许这样做。 MQTT 就是为此目的而设计的。

HTTP(S) 不会保持连接打开 - 因此要获得持续连接的 "effect",HTTPS 客户端必须不断发出轮询请求,每个请求都涉及创建 TCP 连接和每次需要投票时协商 SSL/TLS 加密等。

相比之下,MQTT 在开始时建立连接,因此 TCP 和 SSL/TLS 开销成本仅需支付一次。 MQTT 在 TCP 连接之上的应用程序之间有一个保持活动的消息流,这样应用程序就可以检测到连接何时断开,这允许 MQTT 代理在连接断开时最后 will/testament 可靠地发布(可选)客户端坏了。

你看文章说MQTT比HTTPS省50%手机电量,我觉得。