使用Androidpn进行推送(一)


    博客分类:
  • Android
 

 

       最近在研究Android的推送,这里主要要讲的用XMPP协议进行android的推送。

       Androidpn的全称是android push notification。它一个android推送的开源框架,客户端用到的是asmack,是一个XMMP协议的实现。服务器端用了spring hibernate进行页面展示,主要是用来显示和服务器建立连接的用户,以及消息的推送。如下图:


使用Androidpn进行推送(一)_第1张图片

       官方的代码实现是用的Jetty来代替tomcat实现的,刚拿到官方代码时,一头雾水,费了一天的时间了解了服务器端的整体构建,然后进行重构。首先把羡慕部署在tomcat上,编译会发现出了很多错误,然后进行整改,删除一些和tomcat重复的包,然后删掉jetty等等等等,具体细节就不阐述了。整改成功后,测试可用,今天开始研究androidpn服务器端的源代码,其实本来我不太了解XMPP协议的,经过这几天的学习,大概明白一点了。下面开始讲解下androidpn中的几个关键类。

       首先登场的当然是和客户端简立连接的类了。是在org.androidpn.server.xmpp.net下的Connection类里,如下是它其中的字段:

public class Connection {

Java代码   收藏代码
  1. private static final Log log = LogFactory.getLog(Connection.class);  
  2.   
  3. private IoSession ioSession;  
  4.   
  5. private Session session;  
  6.   
  7. private ConnectionCloseListener closeListener;  
  8.   
  9. private int majorVersion = 1;  
  10.   
  11. private int minorVersion = 0;  
  12.   
  13. private String language = null;  
  14.   
  15. private TLSPolicy tlsPolicy = TLSPolicy.optional;  
  16.   
  17. @SuppressWarnings("unchecked")  
  18. private static ThreadLocal encoder = new ThreadLocalEncoder();  
  19.   
  20. private boolean closed;  

 

 

其中iosesion引用的MINA框架中的一个类,它是MINA中所有session类的顶级接口,它是线程安全的,其中定义了一些客户端的端口 地址等属性信息,主要是用来保存服务器和客户端之间建立连接的一些信息。MINA是一个socket框架,主要是为了多线程管理socket的出现的,有兴趣的朋友可以看一看。

       Session是一个抽象类,也是自定义的,主要是描述一些服务器和客户端的信息。Majorversion和minorversion指的是主版本和副版本。

       Tlspolicy指的是传输协议的策略,是一个枚举类型,分为三种required,optional,disabled.

 

       Encoder主要是来定义编码的,这里用的是utf8。

       在这个类里,还有一个ClientAuth,也是枚举类型,主要是用来表示客户端是否需要验证。它主要的功能是用来建立连接,定义了一下发送数据到客户端的方法,还有就关闭连接的时候绑定监听器进行处理。

       今天好晚了,明天继续…

你可能感兴趣的:(推送,AndroidPn)