消息推送,及时通信:
目的:想办法让服务器能够及时的通知客户端
实现方案:
1-轮询:客户端每隔一定的时间向服务发出请求,获取最新消息
特点:
1.如果用在最新新闻通知上,那么效率就比较低下。
2.技术简单,容易是实现
应用场景:当服务器端的数据以固定的频率更新,比如股票行情。
2- 发短信:
特点:效率高,最及时,同时,费用也是最高的。
应用场景:比较土豪的做法
3- 使用第三方的开源项目:
AndroidPN(android push notify)
4- 使用第三方的API实现推送功能
百度推送、极光推送、个推、微信推送
实现方式3和4原理上都属于消息推送。
消息推送的实现原理:Socket长联接+心跳帧
XMPP网络上开源的,用于网络聊天的网络协议
asmack.jar 是对xmpp协议的实现
说一说TCP HTTP之间的关系
说一说Socket-> HttpUrlConnection-> HttpClient ->HttpUtils 之间的关系
AndroidPN环境
AndroidPN实现了从服务器到android移动平台的文本消息推送。这里先简单说一下androidPN的安装过程。
下载androidpn-client-0.5.0.zip和androidpn-server-0.5.0-bin.zip
网址:http://sourceforge.net/projects/androidpn/
解压两个包,Eclipse导入client,配置好目标平台,打开raw/androidpn.properties文件,
apiKey=1234567890
xmppHost=10.0.2.2
xmppPort=5222
如果是模拟器来运行客户端程序,把xmppHost配置成10.0.2.2 (模拟器把10.0.2.2认为是所在主机的地址,127.0.0.1是模拟器本身的回环地址).
xmppPort=5222 是服务器的xmpp服务监听端口
运行androidpn-server-0.5.0\bin\run.bat启动服务器,从浏览器访问http://127.0.0.1:7070/index.do (androidPN Server有个轻量级的web服务器,在7070端口监听请求,接受用户输入的文本消息)
运行客户端,客户端会向服务器发起连接请求,注册成功后,服务器能识别客户端,并维护和客户端的IP长连接
进入Notifications界面,输入消息发送
模拟器客户端接受到server推送的消息
这样AndroidPN的环境就搭好了,下一步我将深入研究研究实行以及XMPP协议。