【问题标题】:How does persistent tcp/ip connections preserve battery and lower bandwidth usage?持久的 tcp/ip 连接如何节省电池电量和降低带宽使用量?
【发布时间】:2013-10-07 08:38:23
【问题描述】:

在推送通知机制中,例如 Apple 的推送通知服务,它们使用持久的 IP 连接。

我的问题是,使用持久连接如何节省设备的电池和带宽? 我的印象是,由于连接是持久的,因此设备始终使用 WiFi 或 3G/LTE 无线电。

我知道,通过持久连接,您不会因为没有更改时不向服务器请求更改而浪费带宽,而是服务器会将这些更改“推送”给您。但是,我看不出这如何节省电池和带宽(因为您与服务器的连接始终在线)。

可以在这里找到类似的问题:
How does Android C2DM improve bandwidth useage?
但我认为答案还不够。

【问题讨论】:

    标签: push-notification push bandwidth battery persistent-connection


    【解决方案1】:

    首先,您必须考虑设备实现的状态机,以控制网络通信引起的功耗。你可以看here 阅读后您会发现,正如 Adam 所说,创建连接对您的电池寿命非常不利,而轮询是关于创建/销毁连接的。

    因此,C2DM 避免创建连接以降低功耗。最后,节省是由于:

    1. 持久连接并不意味着设备始终处于全功率状态。只是表示连接没有关闭,然后服务器可以向客户端发送消息。
    2. C2DM 使用不同的机制传递消息,您可以在 GCM Advanced Topics 中阅读。因此,可以将其配置为仅在设备已处于全功率状态时才传递消息
    3. 最后一个因素是 GCM 如何将消息传递到空闲设备。官方文档中很不清楚,我认为 Google Play Service 的源代码不可用。尽管如此,您可以通过以下答案here获得一些线索。第一条评论似乎很有用。

    有一点我不确定:我不知道他们如何在低级别保持连接。那就是我缺少的那部分。您可以阅读Android C2DM slide 15 以获得一些解释。似乎它们提供了某种对状态机的巧妙处理。

    【讨论】:

      【解决方案2】:

      它保持电池寿命和带宽使用的方式有点间接。节省的形式是让一项服务维持持久连接,而不是设备上的每个应用程序都不断创建/破坏连接并不断使用带宽。

      例如,如果您的手机上有 Facebook、Instagram 和 Twitter 应用程序,为了使所有内容保持最新,您将拥有三个应用程序不断轮询服务器以进行更改。

      解决方案是让一个服务监听传入的连接,并让该服务通知单个应用程序有更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多