当前位置:编程学习 > wap >>

如何实现Android的push技术

需求:

类似于一些邮箱客户端或聊天工具,但是没有他们那么复杂。

就是Android启动一个service,然后服务器端可以随时向客户端发送信息。当然Android的ip是内网的,类似192.。。。因此客户端要想收到服务器的信息,就必须维持一个长连接。



问题:

1、如何在尽量省电和省流量的情况下,维持这个长连接?

2、如果用的是发送心跳包的方式来维持,这个心跳包的发送频率又是什么确定的呢?



请回答具体一点的。

--------------------编程问答-------------------- 1、如何在尽量省电和省流量的情况下,维持这个长连接?
answer: 
        传统的想法是把手机端作为client,这样的话客户端始终需要主动向服务器发起请求,实质还是pull,而不是push。
         完全可以反过来把手机端作为server,PC(掌握最新信息的设备)一旦有数据直接向手机发起请求。
         

2、如果用的是发送心跳包的方式来维持,这个心跳包的发送频率又是什么确定的呢?
answer: 你的前提是省电,所以要仔细想想该方式下如何省电。
         如,实现心跳频率可配置,由服务器端按数据更新频率设置心跳频率。。。。
--------------------编程问答--------------------
引用 1 楼 smallhorse87 的回复:
1、如何在尽量省电和省流量的情况下,维持这个长连接?
answer: 
        传统的想法是把手机端作为client,这样的话客户端始终需要主动向服务器发起请求,实质还是pull,而不是push。
         完全可以反过来把手机端作为server,PC(掌握最新信息的设备)一旦有数据直接向手机发起请求。
         

2、如果用的是发送心跳包的方式来维持,这个……

服务器的数据是无规律可循的。随时想发就发。 --------------------编程问答-------------------- push技术还不是很多资料,我了解的一个是androidpn,在jetty容器运行,你可以了解下。

或者你找到一个发短信的平台,需要推送的时候就给发短信,然后客户端那边截取短信,并作出相应通知 --------------------编程问答--------------------
引用 3 楼 a328240784 的回复:
push技术还不是很多资料,我了解的一个是androidpn,在jetty容器运行,你可以了解下。

或者你找到一个发短信的平台,需要推送的时候就给发短信,然后客户端那边截取短信,并作出相应通知

androidpn我最近也在研究。 --------------------编程问答-------------------- 如果是无规律的那就建议用方法一
1、如何在尽量省电和省流量的情况下,维持这个长连接?
answer: 
传统的想法是把手机端作为client,这样的话客户端始终需要主动向服务器发起请求,实质还是pull,而不是push。
完全可以反过来把手机端作为server,PC(掌握最新信息的设备)一旦有数据直接向手机发起请求。

楼上有人提到jetty容器,它的实质是一个轻量级的servlet容器。 --------------------编程问答-------------------- 客户端用serverSockets是可以实现推送的,那个androidpn应该也是用到这个,可能优化了一点吧。。我自己就层在手机上用serverSocket,接受从电脑上socket的链接。楼主想自己整一个简单的,完全可以自定义一些协议 --------------------编程问答--------------------
引用 4 楼 cdz_cn 的回复:
引用 3 楼 a328240784 的回复:

push技术还不是很多资料,我了解的一个是androidpn,在jetty容器运行,你可以了解下。

或者你找到一个发短信的平台,需要推送的时候就给发短信,然后客户端那边截取短信,并作出相应通知

androidpn我最近也在研究。

client端是内网啊 。 --------------------编程问答--------------------
引用 5 楼 smallhorse87 的回复:
如果是无规律的那就建议用方法一
1、如何在尽量省电和省流量的情况下,维持这个长连接?
answer: 
传统的想法是把手机端作为client,这样的话客户端始终需要主动向服务器发起请求,实质还是pull,而不是push。
完全可以反过来把手机端作为server,PC(掌握最新信息的设备)一旦有数据直接向手机发起请求。

楼上有人提到jetty容器,它的实质是一个轻量级的servlet……


client端是内网啊 。 --------------------编程问答--------------------
引用 6 楼 a328240784 的回复:
客户端用serverSockets是可以实现推送的,那个androidpn应该也是用到这个,可能优化了一点吧。。我自己就层在手机上用serverSocket,接受从电脑上socket的链接。楼主想自己整一个简单的,完全可以自定义一些协议


client上的wifi,ip是192.。。。的,我server如果不再同一个局域网,怎么连上去呢? --------------------编程问答--------------------
引用 9 楼 cdz_cn 的回复:
引用 6 楼 a328240784 的回复:

客户端用serverSockets是可以实现推送的,那个androidpn应该也是用到这个,可能优化了一点吧。。我自己就层在手机上用serverSocket,接受从电脑上socket的链接。楼主想自己整一个简单的,完全可以自定义一些协议


client上的wifi,ip是192.。。。的,我server如果不再同一个局域网,怎么连上去呢?……
没错,当时我玩的就是内网。。。不知道手机有没有类似于花生壳之类的玩意。。。但手机有一个servlet容器,叫ijetty --------------------编程问答-------------------- 恼火啊! --------------------编程问答-------------------- 心跳包频率按需求来,你可以测试,对于高要求,例如数据正在传输,可以以秒为单位,对于待机,无操作无数据流量,可适应放宽时间,例如五分钟十分钟等,让心跳包的频率可调是关键 --------------------编程问答-------------------- mark一下 等待好的解决方案。 --------------------编程问答-------------------- 我用androidpn完成过一个,但是是用在毕设里的。根本没经过有效的测试,但是据我观察对服务器的压力还是蛮大的。而且需要在客户端(android手机上)额外开一个service,肯定是耗电的。不过能够实现网络上推送。
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,