首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebSockets能耗

WebSockets能耗
EN

Stack Overflow用户
提问于 2015-03-26 15:11:04
回答 1查看 11.8K关注 0票数 49

在移动设备(iPhone/Android)上,实现WebSockets和HTTP对电池消耗有什么影响?

假设我正在构建一个即时消息应用程序,并且有两个选项:

  1. 依赖推送通知通知设备新消息,然后通过REST获取该消息。
  2. 当用户启动应用程序时建立一个WebSocket连接,并在应用程序处于活动状态时维护该连接。服务器直接将所有消息转发给设备,而不是使用推送通知。

有人告诉我,维护一个持久的WebSocket连接将是一个巨大的电池负担,因为它需要天线不断地活动,而不是在每次请求之后关闭电源--但这真的是真的吗?

This的答案表明,在iOS上,每个设备在任何时候都与推送通知服务保持一个持久的连接(我想类似于WebSockets ),所以这不意味着设备的天线是24/7运行的吗?

对于即时消息应用程序来说,HTTP请求的额外开销非常小,但在需要不断下载大量项目的应用程序中,持久的WebSocket连接将非常有用。任何关于在移动设备上保持长期WebSocket连接(特别是关于电池消耗)的见解都是非常有用的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 22:59:20

纯WebSocket/TCP套接字解决方案(没有乒乓数据包)在空闲状态下甚至不会检测到连接丢失,因为它不会发送任何数据。一旦握手发生,它假设连接已经建立,直到某个套接字关闭,或者发件人将尝试发送一些数据,并且检测到没有连接(在这种情况下,套接字有时会自动关闭,但我不会指望它)。

因此,当连接处于空闲状态时,WiFi可以在没有担心的情况下进入睡眠状态,从而最小化功耗。但是也有一些缺点:它不能检测连接丢失,所以如果ping失败,您必须实现乒乓解决方案,并尝试重新连接。ping循环将对CPU的使用和功耗产生影响,但它将比WiFi低得多,后者经常处于" on“状态。当然,在睡眠模式下,您将失去接收数据的能力。

资料来源:拥有安卓和WebSockets体验。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29282070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档