Mat*_*ieu 5 javascript battery http websocket
我有一个可以在手机上运行的Web应用程序,当打开时会连续生成数据(每隔几秒或几分钟几千字节,具体取决于设置)并需要实时将其推送到服务器.没有数据从服务器发送到浏览器.
我主要关注的是让这个提交电池效率高,几秒钟的延迟完全没问题.
我设想了两个解决方案:
哪一个对电池最有效?我还缺少其他策略吗?
实际上我的应用程序将托管在heroku上,它不支持websockets,导致长轮询,因此目前我认为按需POST更好,但我想知道它是否可能成为未来的选择(或者这个假设是错误的).
在 Android 设备上,如文档所述,存在三种不同的网络无线电状态:
典型 3G 网络无线电的状态机由三种能量状态组成:
全功率:当连接处于活动状态时使用,允许设备以尽可能高的速率传输数据。
低电量:中间状态,使用全状态下大约 50% 的电池电量。
待机:没有网络连接处于活动状态或不需要网络连接的最低能量状态。
虽然低电量和空闲状态消耗的电量显着减少,但它们也会给网络请求带来显着的延迟。从低电量状态恢复到全功率状态大约需要 1.5 秒,而从空闲状态切换到全功率状态可能需要 2 秒多的时间。
设备在 5 秒空闲时间后从 Full 状态变为 Low 状态,然后在 12 秒后从 Low 状态变为 Standby 状态。
上面的链接还介绍了一些电池友好连接的最佳实践,尽管它没有说明有关 Websockets 的任何具体信息。
我在 iOS 设备上找不到这样的具体文档,但该模型似乎以类似的方式应用:
蜂窝和 Wi-Fi 无线电设计为在没有活动时关闭。不过,根据收音机的不同,这样做可能需要几秒钟的时间。如果您的应用程序每隔几秒传输少量数据,则无线电可能会保持通电状态并继续消耗电量,即使它们实际上没有执行任何操作。与其更频繁地传输少量数据,不如一次或以相对较大的间隔传输大量数据。
一般来说,您应该使用短 POST 请求并尽可能少地发送数据,以便无线电可以在中间关闭。