天天看點

xmpp之tigase基本元素

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 進行使用者認證

繼續閱讀