XMPP协议之Androidpn介绍
来源:互联网 发布:it互联网招聘 编辑:程序博客网 时间:2024/06/10 05:38
Androidpn在客户端集成了asmack。这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。Androidpn的客户端中,进行管理连接的类是XmppManager,它主要用来管理连接的信息,比如XMPP的端口、IP、登录的用户名密码,以及对连接的维护。为什么还有用户名和密码?这不得不提到XMPP的具体细节。整个服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先会指定服务器的端口号,然后把上述提到的信息发送到服务器端,怎么发送消息的呢?以<stream>根节点的方式开始传递,只有在服务器和客户端关闭的时候才会发送它的结束标记</stream>。客户端通过XMPP协议只用做的就是接收消息,而所有其它的操作都交给服务器,比如管理连接、消息保存等等,这样就很大程度的减轻了客户端的负担。那么客户端和服务器端的消息回应是如何实现的?如要通过一个ID来标识,具体细节可以去查看XMPP协议。
一旦注册绑定后,服务器端就和客户端建立了连接,客户端只用负责去接收消息。所以当我们应用Androidpn的时候,客户端会非常的简单。而在服务器端,Androidpn又做了什么呢?
服务器端的展示方面,androidpn主要用到的技术是Spring和Hibernate。主要是用来展示用户状态和发送信息用的,如下图:
这方面的技术已经比较成熟,就不再细说了,主要要说的还是XMPP的管理。在服务器端的源码中一个org.androidpn.server.xmpp.net.Connection类,主要是代表一个服务器上的XMPP连接,注意只是一个,它可以确保在服务器关闭的时候,发送一个</stream>标记到客户端,告知连接断开,需重新连接。
org.androidpn.server.xmpp.session.SessionManager主要用户管理所有会话,比如连接断开,删除session以及建立连接,添加session等等。
而在管理Socket连接的时候,androidpn采用了MINA框架来进行管理,MINA的优点就是改变了我们传统的管理socket的方式,比如没建立一个socket开一个线程,而MINA可以实现多个线程管理N多个用户。在处理高并发的推送上无疑是有巨大的好处的。
合理的利用监听器来管理session,也是androidpn的优点。在安全性方面,制定了TLS(安全传输层)策略,并却采用了安全认证,这些方面都做的不错。
当然,不可避免的30秒钟的心跳包还是必不可少的。
总之,用Androidpn好处有以下方面:采用完全开放的XMPP协议进行数据传输(QQ,MSN,GTalk等都是采用的这种协议);良好的框架支持(专门为android 而产生的推送框架asmack,以及很好的管理socket的框架MINA,都是很成熟的产品);完全开放的源代码(我们可以在androidpn的基础上进行修改,来满足我们的任何需求变更);大大的减少了客户端的代码,降低了android的开发难度。缺点不言而喻,使用了太多的框架,如果想要改一些具体的实现,可能会迁移发动全身。不过如果你个懒人的话,完全满足你的需求了。
androidpn官网:http://sourceforge.net/projects/androidpn
PHP推送消息服务器下载地址 : https://github.com/tokudu/PhpMQTTClient
Android客户端下载地址: https://github.com/tokudu/AndroidPushNotificationsDemo
转至:http://www.iteye.com/topic/1117043
参考文档:
1.Androidpn里的Xmpp的理解
2.基于xmpp openfire smack开发之Android消息推送技术原理分析和实践
3.Android消息推送之Androidpn_Demo
- XMPP协议之Androidpn介绍
- androidpn学习实践----XMPP协议实现原理介绍
- androidpn之xmpp分析
- 推送androidpn基于xmpp协议
- Android Push Notification-androidpn(基于XMPP协议)
- Android消息推送(一)--AndroidPn(XMPP协议)Demo(包含tomacat)
- Android消息推送(一)--AndroidPn(XMPP协议)Demo版
- Androidpn 基于XMPP协议的消息推送实践
- 基于xmpp协议的开源框架androidpn学习笔记
- XMPP 协议介绍
- XMPP 协议介绍【ZT】
- XMPP协议介绍
- XMPP协议介绍
- XMPP协议介绍
- XMPP协议原理介绍
- XMPP协议介绍
- XMPP协议介绍
- XMPP协议介绍
- Lucene的使用和优化
- CSS 背景图随div大小缩放 兼容IE
- CSS 判断IE并执行样式
- C——结构体总结
- 点击按钮跳转页面
- XMPP协议之Androidpn介绍
- js获取当前页面url信息
- android 语音对话demo
- 腾讯qq下载2015正式版 v7.2 官方免费版下载
- 2015年第十三周杭电:折线问题
- ASP.NET多个按钮同一事件 不同处理
- confirm在火狐中无效的解决方案
- js判断只能输入字母和空格
- WEB聊天表情--正则表达式$用法,replace用法