




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Androidpn消息推送协议1 通信机制 Androidpn通信机制分别由客户端和服务器完成。 客户端采用基于java的XMPP协议包asmack(该包依赖于openfire下的开源项目smack)。通过该协议包提供的XMPPConnetcion类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,以及接受服务器消息。 服务器是基于开源的openfire工程,采用java语言实现和 Spring框架提供Web服务。主要有两个部分,一个是侦听在5222端口上的XMPP服务,负责与客户端的XMPPConnection类进行通信,作用是用户注册和身份认证,并推送消息。另外是Web服务器,采用一个轻量级的HTTP服务器,负责接收用户的Web请求。 整个基于XMPP的通信中,服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先客户端会指定端口号,然后把准备的连接信息发送到服务器端,客户端通过XMPP协议做的只有接收消息,其他的管理连接和保存消息等都由服务器负责。消息的传递是以根节点为起始,以为结束。 服务器和客户端建立Tcp连接过程如下。首先,建立会话协商,Client 准备connecting to server (:5222)。其次,服务器询问Client所支持的安全认证。再者,Client发送给服务器要注册的用户。然后,Client根据服务器的要求提交用户信息。最后,Client关闭注册的STREAM元素。2 客服端 Client包含消息的收发、解析以及持久连接的发起、重连等功能。主要有以下几部分: 控制器 XmppManager是Client的主控制器,主要用来管理连接信息,包括XMPP端口、IP地址、登录的用户名和密码,以及对连接的维护。 消息解析处理 NotificationIQ、NotificationPackerListener以及NotificationIQProvider三个类负责对收到的Notification格式的消息进行解析和处理。 手机状态监听 PersistentConnetcionListener、PhoneStateChangeListener以及ReconnectionThread三个类负责监听手机状态和断线重连。3 服务器 服务器主要由以下几个包组成: org.androidpn.server.xmpp异常类型定义,包含程序入口类XmppServer。 org.androidpn.server.util加载配置文件,获取主机和端口等信息。 org.androidpn.server.xmpp.codec是XMPP协议的XML文件解析包,server 收到和发送的消息都要通过这个包来进行xmpp协议编码和解码。 org.androidpn.server.xmpp.handler负责对不同类型的消息进行处理 负责维护与client之间的持久连接,并实现了一些传输方式供发送xmpp消息时使用。 org.androidpn.server.xmpp.ssl是对连接进行ssl认证的工具包。 org.androidpn.server.xmpp.router包负责将收到的信息包发送到相应的handler进行处理,是一个路由包。 org.androidpn.server.xmpp.presence里面只包含PresenceManager类,用来维护client的在线状态。 org.androidpn.server.xmpp.push包里面的NotificationManager类包含有向client发送消息的接口。 服务器中使用ServerStarter类启动服务,服务启动后使用XmppServer来管理连接、加载配置等。 服务器接收处理消息流程 connection接收到来着Client的packet,使用包codec解码。 路由包router根据packet的namespace等信息,将packet路由到相应的Handler。 Handler开始处理。 服务器发送消息的流程 使用NotificationManager接口的push方法。 使用SessionManager在Session集合查找相应的client连接。 定义和组装XMPP消息,通过session向client发送。4 注册 Client在与服务器建立connection后,首先会提交注册任务,在Androidpn项目中,用户注册是采用UUID(通用唯一标识码)来实现的,其每次登录都会利用这个UUID.randomUUID()来产生一个用户名和密码,而且不会重复。 注册方法根据Server的格式要求组装注册消息,发送到服务器,同时使用在connection中添加监听,来获取服务器返回的消息packet。Client会根据消息的类型来判断是否注册成功。 服务端收到Client的注册请求,会通过路由类router来转发到相应的Handler处理,router首先会读取Client发来包Packet的Namespace部分,根据XMPP RFC协议注册packet的namespace为jabber:iq:register,授权packet的namespace为jabber:iq:auth,由此转发到IQRegisterHandler处理注册请求。 如果注册成功,Client会把相应的用户名、密码通过SharePerence保存在Client的共享文件AndroidpnClient中。此外,AndroidpnClient还保存了当前应用的包名、类名、服务器地址、端口、客户端版本、设备ID等。5 登录 Client的登录是在注册之后进行的,在Client的XmppManager类中,建立连接的时候首先会提交登录任务,然而在提交登录任务的时候都有一个submitRegisterTask()方法,可知,每次登录都会首先提交一个注册任务。 登录的时候,要先通过isAuthenticated()方法判断是否授权,授权处理同样会通过connection发送到服务端,服务端会根据packet的namespace部分进行解析,然后路由类router会根据namespace转发到IQAuthHandler处理。 Client收到服务端返回的消息packet,会使用connection的监听器异步接收消息,并通过XmppManager的context的sendBroadcast(Intent intent)以广播发送出去。6 基于tomcat的配置 更改启动方式 依据ServerStart类写一个servlet,在servlet中启动时创建XmppServer实例。然后在web.xml中配置为自启动。 修改conf目录 将androidpn自带的配置目录conf拷贝到WEB-INF下面,并且把spring-config.xml文件从conf目录移动到WEB-INF目录。 修改配置文件 修改默认的spring-config.xml文件,在文件schema的头部下面加入如下内容,其中,加载顺序会默认先加载applicationContext文件,然后会加载spring-config文件后面的内容。 原因是spring-config文件中有个组件会在web服务启动的时候加载,该组件也会初始化XmppServer,导致与servlet的加载发生冲突。 由于未使用使用hibernate-cfg.xml文件,需要在spring-config文件加入如下内容: org/androidpn/server/model/User.hbm.xml org.hibernate.dialect.SQLServerDialect true update 在spring-config.xml文件中,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘之《幼儿教师招聘》题库带答案详解(精练)
- 年产200kt磷酸铁锂正极材料生产线项目可行性研究报告模板-立项拿地
- 2025玛纳斯县司法局招聘编制外专职人民调解员(5人)笔试备考题库及答案解析
- 2025年文化与科技融合趋势下的智慧农业解决方案报告
- 2025年工业互联网平台传感器网络自组网技术在智能工厂设备智能调度中的应用报告
- 合作学习:大学英语词汇教学的创新与突破
- 教师招聘之《小学教师招聘》考试历年机考真题集附参考答案详解【典型题】
- 教师招聘之《小学教师招聘》高分题库附答案详解(综合卷)
- 教师招聘之《小学教师招聘》通关测试卷含答案详解(综合题)
- 押题宝典教师招聘之《幼儿教师招聘》模考模拟试题附答案详解(模拟题)
- 医疗质量 岗前培训课件
- (2025秋新版)二年级上册道德与法治全册教案
- 电子产品出厂质量验收标准
- 项目可行性研究报告评估咨询管理服务方案投标文件(技术方案)
- 2025年事业单位工勤技能-广东-广东水生产处理工一级(高级技师)历年参考题库典型考点含答案解析
- 公共机构建筑能源审计和能耗基准值技术服务方案投标文件(技术标)
- 2025-2026学年人教PEP版(2024)小学英语四年级上册教学计划及进度表
- 2025广西公需科目考试题库和答案(覆盖99%考题)广西一区两地一园一通道+人工智能时代的机遇
- 脓毒症护理查房记录
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 企业燃气充值管理办法
评论
0/150
提交评论