如何实现Android的push技术
需求:类似于一些邮箱客户端或聊天工具,但是没有他们那么复杂。
就是Android启动一个service,然后服务器端可以随时向客户端发送信息。当然Android的ip是内网的,类似192.。。。因此客户端要想收到服务器的信息,就必须维持一个长连接。
问题:
1、如何在尽量省电和省流量的情况下,维持这个长连接?
2、如果用的是发送心跳包的方式来维持,这个心跳包的发送频率又是什么确定的呢?
请回答具体一点的。
--------------------编程问答-------------------- 1、如何在尽量省电和省流量的情况下,维持这个长连接?
answer:
传统的想法是把手机端作为client,这样的话客户端始终需要主动向服务器发起请求,实质还是pull,而不是push。
完全可以反过来把手机端作为server,PC(掌握最新信息的设备)一旦有数据直接向手机发起请求。
2、如果用的是发送心跳包的方式来维持,这个心跳包的发送频率又是什么确定的呢?
answer: 你的前提是省电,所以要仔细想想该方式下如何省电。
如,实现心跳频率可配置,由服务器端按数据更新频率设置心跳频率。。。。
--------------------编程问答--------------------
服务器的数据是无规律可循的。随时想发就发。 --------------------编程问答-------------------- push技术还不是很多资料,我了解的一个是androidpn,在jetty容器运行,你可以了解下。
或者你找到一个发短信的平台,需要推送的时候就给发短信,然后客户端那边截取短信,并作出相应通知 --------------------编程问答--------------------
androidpn我最近也在研究。 --------------------编程问答-------------------- 如果是无规律的那就建议用方法一
1、如何在尽量省电和省流量的情况下,维持这个长连接?
answer:
传统的想法是把手机端作为client,这样的话客户端始终需要主动向服务器发起请求,实质还是pull,而不是push。
完全可以反过来把手机端作为server,PC(掌握最新信息的设备)一旦有数据直接向手机发起请求。
楼上有人提到jetty容器,它的实质是一个轻量级的servlet容器。 --------------------编程问答-------------------- 客户端用serverSockets是可以实现推送的,那个androidpn应该也是用到这个,可能优化了一点吧。。我自己就层在手机上用serverSocket,接受从电脑上socket的链接。楼主想自己整一个简单的,完全可以自定义一些协议 --------------------编程问答--------------------
client端是内网啊 。 --------------------编程问答--------------------
client端是内网啊 。 --------------------编程问答--------------------
client上的wifi,ip是192.。。。的,我server如果不再同一个局域网,怎么连上去呢? --------------------编程问答-------------------- 没错,当时我玩的就是内网。。。不知道手机有没有类似于花生壳之类的玩意。。。但手机有一个servlet容器,叫ijetty --------------------编程问答-------------------- 恼火啊! --------------------编程问答-------------------- 心跳包频率按需求来,你可以测试,对于高要求,例如数据正在传输,可以以秒为单位,对于待机,无操作无数据流量,可适应放宽时间,例如五分钟十分钟等,让心跳包的频率可调是关键 --------------------编程问答-------------------- mark一下 等待好的解决方案。 --------------------编程问答-------------------- 我用androidpn完成过一个,但是是用在毕设里的。根本没经过有效的测试,但是据我观察对服务器的压力还是蛮大的。而且需要在客户端(android手机上)额外开一个service,肯定是耗电的。不过能够实现网络上推送。
补充:移动开发 , Android