學習 Smack(一)

學習 Smack(一)

Smack是一個用於和XMPP服務器通信的類庫,由此可以實現即時通訊和聊天,Android 上對於Asmck的實現是Asmck,Asmack是一個完整的對於XMPP API的實現,而Asmack是smack Android 上的構建版本,該資源並不包含太多的代碼,只是一個構建的環境,開發者可以利用該API基於XMPP協議的即時通信開發

Smack的優勢:
1.非常簡單易用,並且有強大API實現,只需要三行代碼即可向用戶發送文本消息
XMPPConnection connection = new XMPPConnection("jabber.org");
connection.login("mtucker", "password");
connection.createChat("[email protected]").sendMessage("Howdy!");

2.不像其他的類庫強制進行包級別的編碼,Smack提供智能更加高級的構造,像Chat GroupChart  類,可以更加高效的編程

3.不需要你熟悉XMPP XML格式,即使您熟悉XML

 4.提供簡單的設計以進行通信,Smack允許您在每個消息中設置任意數量的屬性,包括Java對象

 5.Apache許可下的開源類庫,這意味着你可以將Smack整合到商業應用或者非商業應用

Smack源碼中的部分類:
Smack的唯一條件是JDK1.2版本或者以上,Smack.jar已經包含了一個XML解析器,不需要第三方的類庫
JDK1.2或1.3用戶需要使用SSL的話,則在classPath中必須要包含JSSE類庫
XMPPConnection 用來建立到XMPP服務器的連接,如果需要使用SSL的話,需要使用SSLXMPPConnection,下面是建立連接的方法
// 建立一個到jabber.org服務器的連接。
XMPPConnection conn1 = new XMPPConnection("jabber.org");

// 通過一個特殊的端口建立一個到jabber.org服務器的連接。
XMPPConnection conn2 = new XMPPConnection("jabber.org", 5222);

// 建立一個到jabber.org服務器的SSL連接。
XMPPConnection connection = new SSLXMPPConnection("jabber.org"); 
一旦建立連接您必須通過方法XMPPConnection.Login(String userName,String password)方式登陸到Xmpp服務器,如果登陸成功則可以通過Chat或者GroupChat與服務器進行通信

操作Roster
Roster能夠操作用戶的有效性(是否存在),您可以使用像“朋友” “同事” 這樣分組來組織用戶,這樣可以發現每個用戶是否在線
使用XmppConnection.getRoster 獲取到Roster對象,通過Roster對象能夠獲取到所有Roster用戶是否登陸,以及分組信息
  讀寫Packet 
  從客戶端以XML的形式向XMPP服務器發送的消息被稱爲Packet org.jivesoftware.smack.packet包中包含一些類,這些類封裝了XMPP中所允許的三個不同類型的Packet(Message ,presence , IQ)  像Chat GroupChat這樣的類提供了更高級別的的構造能夠自動的創建與發送Packet,但是你也可以直接自己創建與發送packet,下面是改變你的presence讓別人知道你已經無效
// 創建一個新的presence. 傳入false以指示我們已經無效了
Presence presence = new Presence(Presence.Type.UNAVAILABLE);
presence.setStatus("Gone fishing");
// 發送packet (假設已經有了一個名爲"con"的XMPPConnection實例).
con.sendPacket(presence);

Smack提供兩種方式用來讀取packet,packageListener[packet監聽器] 與packetCollector(packet收集器)二者都是用packetFilter實例來決定哪個packet實例需要應該被處理,packetListener用於事件性的編程,而packet收集器有一個可以用做輪詢的阻塞隊列,所以當想對一個有可能隨時到來的packet採取一些操作的時候,可以使用packet監聽器,當你想等待一個特別的packet到來,使用packet收集器,你可以使用XmppMananger創建一個packet監聽器或者是收集器



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