androidPN体系结构

理解这篇文章后应该具有的能力:

      一)了解androidpn体系结构

      二)掌握android消息推送与接收机制【Android的收发流程】

      三)按需扩展和改动androidpn

Android概述:

*androidpn是基于xmpp开源组件的一个整合方案

          -->Server端:openfire ,apache mina

          -->客户端:基于smack的asmack

技术基础:

         -->Spring  Hibernate  SpringVMC

         -->Socket/Thread/XML


Server代码结构说明

*dao  model 和service

*util包中的类用来加载resources中的配置文件:config.xml(指定监听端口和ssl证书目录等熟悉)

*xmpp:

       -->推送核心包

       -->入口类XmppServer,这个类用来启动和停止Server程序


org.androidpn.server.xmpp结构说明

*auth:包含认证信息的一些类:可以扩展认证模块

*codec:是XMPP协议的XML文件解析包,server收发消息通过此处编码和解码;可扩展自定义编码/解码规则

*handler:消息的处理:可以针对不同的消息类型定义自己的handler

*net:负责维护与client之间的持久连接,并实现了一些传输方式供发送xmpp消息xmpp消息时使用。

*presence:PresenceManager类,用来维护client的在线状态。

*Push:NotificationManager类包含有想client发送消息的接口

*router:将受到的信息包发送到相应的handler进行处理。

*session:定义了用来表示持久连接的session,每个session包含一条连接的状态信息

*ssl:连接进行ssl认证的工具包


关于apache mina:在Spring-config.xml里面配置了相关内容。需要知道其用法。


其服务端:



关于客户端的作用:【本项目未用到,可以多了解下】




客户端:Client

Client这边包含消息的收发,解析以及持久连接的发起。

Notifier:客户端发送通知的类

XmppManager是控制器,NotificationService通过这个类在后台维护与服务的连接

ServiceManager:管理消息服务和加载相关的配置

android的Service和BroadCast类以及一些工具类和常量类

NotificationSettingsActivity:推送信息设置页面.

NotificationIQ,NotificationIQProvider,NotificationPacketListener三个类:消息的数据包,负责对收到的Notification格式的消息进行解析和处理

NotificationPacketListener:监听从服务器发送过来的数据包并重复执行数据包解析、发送广播、发送通知的操作。

ConnectivityReciver:处理服务端发送的推送消息

NotificationService:后台服务用语相应服务端的消息

PersistentConnectionListener:监控连接关闭和重连事件的监听

PhoneStateChangeListener:监听手机状态的事件监听类

Reconnection:重连的线程类。


服务端:

关于androidpn的asmack

*Smack:基于xmpp协议的及时通信客户端编程库

*Asmack:Smack库的Android版本        建立一个和服务器端的基于xmpp协议的socket连接

*URL:可以从网上下载


服务端和客户端的流程:【流程是非常重要的】



Android  Client执行流程:【流程是非常重要的】

创建服务:

                ->初始化ServiceManager

                -->启动服务

                -->建立连接

                -->用户验证

                              **注册用户

                              **用户登录

                -->断开连接

                -->重新连接

读取配置文件


执行流程:【流程是非常重要的】




Client<接收消息>流程【流程是非常重要的】

客户端ConnectivityReceiverReceive(建立网络连接)&通过验证&连接到服务器的前提下

1.NotificationPacketListener:

       1)会一直监听从服务器发送过来的数据包Packet

        2)并重复执行数据包解析:NotificationIQ-->Intent

        3)发送广播(sendBroadcast给NotificationReceive)

2)NotificationReceiver:onReceiver

3)NotificationDetailsActivity:回发消息

         1)封装消息:IQ

         2)XMPPConnection sendPacket




Server<发送消息>流程

1.NotificationManager的push接口被调用

2.使用SessionManager在当前session集合中查找相应的client 连接

3.XMPP消息格式兵组装

4.通过相应的session,向client发送消息


SERVER<接收>消息流程

1.connection收到packet,使用org.android.server.xmpp.codec解码

2.router根据packet的namespace等信息,将packet路由到相应的handler。

3.handler进行处理:实际上只要根据client发送消息的格式,定义自己的router和handler类,然后在PacketRouter中注册router,在IQRouter中注册handler即可


androidpn问题思考

服务重启后,客户端如何重新连接

消息处理:

             服务器收到消息后如何知道发给哪个

             服务器端如何保存用户消息

             消息如何跟踪:用户是否收到消息,用户是否读取消息

              客户端离线消息如何处理

安全&用户管理

               用户管理

               验证与授权

               信息安全

                IP过滤机制,防止DDOS共计,按照频度和次数过滤

资源管理

推送平台服务

业务改进

                消息封装

                消息跟踪

                 消息管理


            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItJavawfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值