XMPP

XMPPFramework框架內的大致介紹

Authentication授權、身份驗證

Categories分類

Core核心

Extensions擴展

Utilities工具

Vendor第三方庫



在Extensions中:

CoreDataStorage coreData存儲

Reconnect 重新連接

Roster 好友管理、列表



常用模塊:XEP擴展

XEP-0009 RPC(類似黑客技術)

XEP-0012 最後的活動(判斷上線,離開斷開)

XEP-0045 多人聊天

XEP-0054 名片-個人信息設置

XEP-0065 sockets5字節流

XEP-0066 二進制數據傳輸(特殊信息的發送)

XEP-0085 聊天狀態通知

XEP-0136 聊天記錄歸檔

XEP-0153 基於名片的頭像

XEP-0199 XMPP ping(用來ping服務器和ping自己)

XEP-0335 json容器(可能以後某些信息傳輸將用json格式)



XMPP通信的結構

要促進消息傳遞,每個XMPP客戶端用戶client必須擁有一個全局唯一標識符。基於歷史原因,這些標誌符稱爲Jabber IDs,或JIDs。鑑於這個協議分佈式特徵,重要的是JID應該包含聯繫用戶所需要的所有信息:不存在將用戶鏈接到他們連接到的服務器的中央知識庫。。

client和服務器節點,我將他們稱爲XMPP實體,都擁有JIDs。例子:ChangHong公司的員工wu可能擁有[email protected]這個JID。changhong.com是ChangHong公司的XMPP服務器地址。JIDs還擁有連接到它們的資源。這容許在一個XMPP實體標誌符之外進一步處理細粒度;例如,儘管上面的JID可以表示wu,但是[email protected]/Work可以用於將數據發送到與他的工作相關的工具。XMPPJID的組成:userName@domain/resource

這些資源可以採用任意用戶定義的名稱,一個XMPP實體可以擁有任意數量的資源。除了可以是上下文依賴的外,它們還可以綁定到設備、工具或工作站。


XMPPFramework核心類

XMPPStream

XMPPJID XMPPStream中有實例屬性

XMPPPresence XMPPStream中有實例屬性

XMPPStreamDelegate 包含好幾種代理API:授權、註冊、安全等

XMPPPIQ 快速生成XML數據。消息查詢就是它來處理的

XMPPMessage


XMPP工作原理
節點連接到服務器
服務器利用本地目錄系統中的證書對其認證
節點指定目標地址,讓服務器告知目標狀態
服務器查找、連接並進行相互認證
節點之間進行交互
XMPP框架提供的主要擴展功能
XMPPReconnect:如果意外中斷,自動重連XMPP流
XMPPRoster:標準的XMPP花名冊
XMPPRoom:提供多人聊天支持
XMPPPubSub:提供公共訂閱支持
通信類別及公共XML屬性
使用XMPP的實時消息傳遞系統包含三大通信類別:
消息傳遞,其中數據在有關各方之間傳輸
聯機狀態,允許用戶廣播其在線狀態和可用性
信息/查詢請求,它允許XMPP實體發起請求並從另一個實體接收響應
以上三種類型的XMPP節都擁有以下公共屬性:
from:源XMPP實體的JID
to:目標接收者的JID
id:當前對話的可選標識符
type:節的可選子類型
xml:lang:如果內容是人們可讀的,則爲消息語言的描述
XMPP核心文件
XMPPStream:是開發過程中最主要交互的類,所有擴展和自定義代碼均要基於此類進行
XMPPParser:供XMPPStream解析使用
XMPPJID:提供了一個不可變JID的實現,遵守NSCopying協議和NSCoding協議
XMPPElement:以下三個XMPP元素的基類
XMPPIQ :請求
XMPPMessage :消息
XMPPPresence :出席
XMPPModule:開發XMPP擴展時使用
XMPPLogging:XMPP的日誌框架
XMPPInternal:整個XMPP框架內部使用的核心和高級底層內容
XMPP框架常用擴展
XEP-0045: 多用戶聊天
XEP-0060: 發佈-訂閱
XEP-0065: SOCKS5字節流
XEP-0085: 聊天狀態通知
XEP-0096: 文件傳輸
XEP-0172: 用戶暱稱
XEP-0184: 消息送達
CoreDataStorage: 數據存儲
Reconnect:重新連接
Roster:花名冊
XMPP一欄的框架
CocoaLumberjack:日誌框架
CocoaAsyncSocket:底層網絡框架,實現異步Socket網絡通訊
需要添加CFNetwork&Security框架依賴
KissXML:XML解析框架
需要添加libxml2.dylib框架依賴
需要指定如下編譯選項:
OTHER_LDFLAGS = -lxml2
HEADER_SEARCH_PATHS = /usr/include/libxml2
libidn


鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章