------------------------以下是网上摘操--------------------------
Androidpn在客户端集成了asmack。这样就可以很容易的简立一个和服务器端的基于xmpp协议的socket连接。Androidpn的客户端中,进行管理连接的类是XmppManager,它主要用来管理连接的信息,比如XMPP的端口、IP、登录的用户名密码,以及对连接的维护。为什么还有用户名和密码?这不得不提到XMPP的具体细节。整个服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先会指定服务器的端口号,然后把上述提到的信息发送到服务器端,怎么发送消息的呢?以<stream>根节点的方式开始传递,只有在服务器和客户端关闭的时候才会发送它的结束标记</stream>。客户端通过XMPP协议只用做的就是接收消息,而所有其它的操作都交给服务器,比如管理连接、消息保存等等,这样就很大程度的减轻了客户端的负担。那么客户端和服务器端的消息回应是如何实现的?如要通过一个ID来标识,具体细节可以去查看XMPP协议。
一旦注册绑定后,服务器端就和客户端建立了连接,客户端只用负责去接收消息。所以当我们应用Androidpn的时候,客户端会非常的简单。而在服务器端,Androidpn又做了什么呢?
服务器端的展示方面,androidpn主要用到的技术是Spring和Hibernate。
在服务器端的源码中一个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秒钟的心跳包还是必不可少的。
---------------------------------------------------------
下载了服务端,服务器端解压开点击bin下的run.bat运行服务端.
下载客户端, 修改手机客户端的连接ip地址为电脑局域网的ip,编译安装apk到手机,客户端就一个很简单的activity,后台服务自动与服务端进行连接.
打开管理后台http://127.0.0.1:7070 看到有一个用户,那就是我的手机,点击notification给手机段发一条通知,Ok立即收到。
接下来就是把android完美的整合到现有的业务系统中去了。
花了一个下午的时间把后台修改成spring + hibernate + struts2 + tomcat能正常地跑起来了,经测试和手机连接正常发消息没有问题。
(ssh版本)其他地方的修改
(一)请修改 XmppServer 的start方法
屏蔽掉context = new ClassPathXmlApplicationContext("spring-config.xml");
改为使用ApplicationContextAware 接口中的
public void setApplicationContext(ApplicationContext context) throws BeansException
方法,获得ApplicationContext对象。
否则会启动了2个名为ioAcceptor的NioSocketAcceptor实例,可以查看log日志,在tomcat的log目录下的androidpn.log日志,浪费资源
而且在linux系统下会提示5552端口被占用
(二) <bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">
修改成destroy-method="disponse">能快速关闭tomcat进程
(三)把用户系统融合到自己的应用中去,请修改org.androidpn.server.service.impl.UserServiceImpl
,使用自己系统的用户接口
(四)客户端自动注册使用的随机串,如果要使用自己系统的用户,客户端请修改org.androidpn.client.XmppManager 中的username和password
并用修改服务器端的用户身份验证类org.androidpn.server.xmpp.auth.AuthManager的public static AuthToken authenticate(String username, String token,
String digest) throws UnauthenticatedException 方法
分享到:
相关推荐
用androidpn来实现推送(tomcat)
androidpn 代码中实现了服务器重启后自动重连和离线消息推送和消息回执 android手机端的消息推送实现
androidpn为Android应用提供消息通知推送支持, 它本质上服务器端基于 Openfire,客户端基于 asmack,这二者都最 XMPP IM 开源实现里的二个基本组件,应该说 androidpn 只是把二者更多地结合起来用于做 Push的场景。...
关于服务器端向Android客户端的推送,主要有三种方式:轮询,应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果...
androidpn 含有服务端和客户端 ,实现android推送功能,内有txt文档说明
androidpn基于Xmpp的消息推送源码包含了完整的客户端和服务器端。androidpn客户端需要用到一个基于java的开源XMPP协议包asmack,这个包同样也是基于openfire下的另外一个开源项目smack,不过我们不需要自己编译,...
软件开发设计:PHP、QT、应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、...
毕业设计《Android平台校园消息推送服务的设计与实现》,基于AndroidPN实现的即时通信系统,Android客户端部分。.zip毕业设计《Android平台校园消息推送服务的设计与实现》,基于AndroidPN实现的即时通信系统,...
androidpn 含有服务端和客户端 ,实现android推送功能,内有txt文档说明
毕业设计《Android平台校园消息推送服务的设计与实现》,基于AndroidPN实现的即时通信系统 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩...
使用androidpn实现消息推送,有android客户端和server端,对android端做了优化,可以断网重连,后台服务不会被手机管家之类杀死。 需自行更改res/raw/androidpn.properties里的server IP。
Androidpn tomcat版本,实现android推送功能
我的毕业设计《Android平台校园消息推送服务的设计与实现》,基于AndroidPN实现的即时通信系统,Android服务端部分。
介绍AndroidPn项目实现推送的使用过程
基于XMPP协议、使用Androidpn服务器,Asmack编程的即时通讯IM客户端源代码;主要功能实现向客户端推送消息!
毕业设计&课设--我的毕业设计《Android平台校园消息推送服务的设计与实现》,基于AndroidPN实现的即时通
这是一个消息推送客户端,安装在自己的手机上,可以实现与andriodpn-sever的连接,接受推送的消息
Androidpn客户端 和服务端源码下载,实现了消息推送。具体使用方法可百度。
该设计基于XMPP协议的AndroidPn框架,使用MySQL数据库和Tomcat服务器实现了实时推送消息、自定义消息结构和内容、推送服务启动、手机端服务唤醒、发送离线消息等实用技术。 四、AndroidPn框架介绍 AndroidPn框架是...