xmpp之tigase基本元素

来源:互联网 发布:淘宝卖的好的飞机杯 编辑:程序博客网 时间:2024/04/30 10:29
Component 组件:是可配置的,tigase最主要的元素 负责接收,处理消息
基础的4个工具接口:ServerComponent, MessageReceiver, Configurable , StatisticsContainer
Plug-in 插件:常是小段代码负责处理特定的XMPP功能
Connector 连接器:访问数据库 身份验证连接器和用户数据连接器(他们是独立的,可以连接到不同的数据源)

tigase.xmpp.impl目录下全都是插件
tigase.io目录下 是tigase接收网络数据的实现目录
tigase.net目录 是字节转换成字符的实现目录,和根据tigase.xml配置转变成返回xml 节点对象

插件:
Packet packet  处理消息的  这个永远不能是null
XMPPResourceConnection session  用户的session,这是客户端连接的工具,当用户的session在线是保存在一个只读的数据库或者内存里
NonAuthUserRepository repo 用户session为null时使用,此时是有限制的访问,还可以存储用户的私人数据(不允许覆盖现有数据)为离线用户信息和阅读它还允许用户名片等公共数据。
Queue results 数据包 队列
Map settings 通常不适用,当插件想访问外部数据时这是一个数据库连接字符串传递给插件的方法。从tigase-server的配置文件不断的中加载进来(貌似是 不重启服务,直接修改配置文件就可以)
插件的实现 
1.extends XMPPProcessor 
   处理数据implement XMPPProcessorIfc 
   预处理数据implement XMPPPreprocessorIfc
2.我们要为插件设置一个唯一的标识(String类型) 示例:
  private static final String ID = "message";
  public String id() { return ID; }
也可选择:
  public String[] supElements() {
      return new String[] {"message"};
 }
 public String[] supNamespaces() {
      return new String[] {"jabber:client"};
 }

3.配置文件以便tigase启动时可以加载插件
1.第一种:init.properties 文件中添加  --sm-plugins=插件id (多个已,好隔开)
2.第二种:SessionManagerConfig 文件 PLUGINS_FULL_PROP_VAL 常量里添加插件id

Component (组件)
1.AbstractMessageReceiver  消息接收
2.修改配置文件 以便tigase能加载新的组件
1.第一种:参考 MessageRouterConfig.java 常量COMPONENT_CLASSES其他组件的配置
2.第二种:init.properties 文件中添加 --comp-name-编号(1~)  = test
                                                            --comp-class-编号(1~) = tigase.component.TestComponent
此种方式 编号需要我们自己管理,如果重复启动时就报被占用异常(不建议使用)
3.processPacket(Packet packet);此方法是多线程的 同时重写 int processingOutThreads() 
and int processingInThreads() 这两个方法可以帮助我们查看 入/出 数据时的线程数,一般情况是都是1
4.hashCodeForPacket(Packet packet);通过重写它,我们可以确保所有数据包向相同的用户永远是由同一线程处理
5.addTimerTask(...)计时器
6.initBindings(...)加载脚本支持

7.组件加载过程:
(1).组件在加载方式是调用一个无参数的构造方法,
(2).setName(String 组件name),改方法是给组件起个名字。一旦调用改方法组件就成功加载了
(3).start(),stop() 开始/关闭组件,多次调用会重启
(4).getDefaults() 获取默认配置 周期内只会调用一次
(5).setProperties() 周期内可以多次调用
(6).initializationCompleted() 告知server组件已经初始化完成

8.PacketFilterIfc.java数据filter的基础接口
9.MessageRouter.java 控制XMPP数据包流内部的服务器
ClientConnectionManager.java 用户连接管理 (打开/关闭连接)
RepositoryFactory.java 常用配置参数 
TigaseCustomAuth.java 进行用户认证
0 0