ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:24.59KB ,
资源ID:10277328      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10277328.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(androidpn-消息推送文档.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

androidpn-消息推送文档.doc

1、1Androidpn 消息推送协议1 通信机制Androidpn 通信机制分别由客户端和服务器完成。客户端采用基于 java 的 XMPP 协议包 asmack(该包依赖于 openfire 下的开源项目 smack)。通过该协议包提供的 XMPPConnetcion 类与服务器建立持久连接,并通过该连接进行用户注册和登录认证,以及接受服务器消息。服务器是基于开源的 openfire 工程,采用 java 语言实现和 Spring 框架提供 Web 服务。主要有两个部分,一个是侦听在 5222 端口上的 XMPP 服务,负责与客户端的 XMPPConnection 类进行通信,作用是用户注册和

2、身份认证,并推送消息。另外是 Web 服务器,采用一个轻量级的 HTTP 服务器,负责接收用户的Web 请求。整个基于 XMPP 的通信中,服务器端和客户端的通信是基于一个session(会话)过程,会话开始,首先客户端会指定端口号,然后把准备的连接信息发送到服务器端,客户端通过 XMPP 协议做的只有接收消息,其他的管理连接和保存消息等都由服务器负责。消息的传递是以根节点为起始,以为结束。服务器和客户端建立 Tcp 连接过程如下。首先,建立会话协商,Client 准备 connecting to server (127.0.0.1:5222)。其次,服务器询问 Client 所支持的安全认证

3、。再者,Client 发送给服务器要注册的用户。然后,Client 根据服务器的要求提交用户信息。最后,Client 关闭注册的 STREAM 元素。2 客服端Client 包含消息的收发、解析以及持久连接的发起、重连等功能。主要有以下几部分:2 控制器XmppManager 是 Client 的主控制器,主要用来管理连接信息,包括 XMPP 端口、IP 地址、登录的用户名和密码,以及对连接的维护。 消息解析处理NotificationIQ、NotificationPackerListener 以及NotificationIQProvider 三个类负责对收到的 Notification 格式

4、的消息进行解析和处理。 手机状态监听PersistentConnetcionListener、PhoneStateChangeListener以及 ReconnectionThread 三个类负责监听手机状态和断线重连。3 服务器服务器主要由以下几个包组成:org.androidpn.server.xmpp 异常类型定义,包含程序入口类 XmppServer。org.androidpn.server.util 加载配置文件,获取主机和端口等信息。org.androidpn.server.xmpp.codec 是 XMPP 协议的 XML 文件解析包,server 收到和发送的消息都要通过这个包

5、来进行 xmpp 协议编码和解码。org.androidpn.server.xmpp.handler 负责对不同类型的消息进行处理 负责维护与 client 之间的持久连接,并实现了一些传输方式供发送 xmpp 消息时使用。org.androidpn.server.xmpp.ssl 是对连接进行 ssl 认证的工具包。org.androidpn.server.xmpp.router 包负责将收到的信息包发送到相应的handler 进行处理,是一个路由包。3org.androidpn.server.xmpp.presence 里面只包含 PresenceManager 类,用来维护 client

6、 的在线状态。org.androidpn.server.xmpp.push 包里面的 NotificationManager 类包含有向 client 发送消息的接口。服务器中使用 ServerStarter 类启动服务,服务启动后使用 XmppServer 来管理连接、加载配置等。 服务器接收处理消息流程 connection 接收到来着 Client 的 packet,使用包 codec 解码。 路由包 router 根据 packet 的 namespace 等信息,将 packet 路由到相应的 Handler。 Handler 开始处理。 服务器发送消息的流程 使用 Notifica

7、tionManager 接口的 push 方法。 使用 SessionManager 在 Session 集合查找相应的 client 连接。 定义和组装 XMPP 消息,通过 session 向 client 发送。4 注册Client 在与服务器建立 connection 后,首先会提交注册任务,在 Androidpn项目中,用户注册是采用 UUID(通用唯一标识码)来实现的,其每次登录都会利用这个 UUID.randomUUID()来产生一个用户名和密码,而且不会重复。注册方法根据 Server 的格式要求组装注册消息,发送到服务器,同时使用在 connection 中添加监听,来获取服

8、务器返回的消息 packet。Client 会根据消息的类型来判断是否注册成功。服务端收到 Client 的注册请求,会通过路由类 router 来转发到相应的Handler 处理, router 首先会读取 Client 发来包 Packet 的 Namespace 部分,根据XMPP RFC 协议注册 packet 的 namespace 为 jabber:iq:register,授权 packet 的namespace 为 jabber:iq:auth,由此转发到 IQRegisterHandler 处理注册请求。4如果注册成功,Client 会把相应的用户名、密码通过 SharePer

9、ence 保存在Client 的共享文件 AndroidpnClient 中。此外,AndroidpnClient 还保存了当前应用的包名、类名、服务器地址、端口、客户端版本、设备 ID 等。5 登录Client 的登录是在注册之后进行的,在 Client 的 XmppManager 类中,建立连接的时候首先会提交登录任务,然而在提交登录任务的时候都有一个submitRegisterTask()方法,可知,每次登录都会首先提交一个注册任务。登录的时候,要先通过 isAuthenticated()方法判断是否授权,授权处理同样会通过 connection 发送到服务端,服务端会根据 packet

10、 的 namespace 部分进行解析,然后路由类 router 会根据 namespace 转发到 IQAuthHandler 处理。Client 收到服务端返回的消息 packet,会使用 connection 的监听器异步接收消息,并通过 XmppManager 的 context 的 sendBroadcast(Intent intent)以广播发送出去。6 基于 tomcat 的配置 更改启动方式依据 ServerStart 类写一个 servlet,在 servlet 中启动时创建 XmppServer 实例。然后在 web.xml 中配置为自启动。 修改 conf 目录将 and

11、roidpn 自带的配置目录 conf 拷贝到 WEB-INF 下面,并且把 spring-config.xml 文件从 conf 目录移动到 WEB-INF 目录。 修改配置文件修改默认的 spring-config.xml 文件,在文件 schema 的头部下面加入如下内容,其中,加载顺序会默认先加载 applicationContext 文件,然后会加载 spring-config 文件后面的内容。5原因是 spring-config 文件中有个组件会在 web服务启动的时候加载,该组件也会初始化 XmppServer,导致与 servlet 的加载发生冲突。由于未使用使用 hibern

12、ate-cfg.xml 文件,需要在 spring-config 文件加入如下内容:org/androidpn/server/model/User.hbm.xml org.hibernate.dialect.SQLServerDialect true update在 spring-config.xml 文件中,配置组件的 listenrPort 属性6此外,Androidpn 默认采用 spring-mvc 方式配置,所以需要修改 action 指向。修改 org.androidpn.server.console.controller 包下面的三个类,改为继承自struct2 的 ActionSupport 方式,并修改默认的调用方法,然后配置 struct.xml 文件。

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报