XMPP客戶端庫Smack 4.0.6版開發之三
來源:程序員人生 發布時間:2015-01-15 09:06:20 閱讀次數:3381次
XMPP客戶端庫Smack 4.0.6版開發之3
作者:chszs,轉載需注明。博客主頁:http://blog.csdn.net/chszs
6、建立連接的例子
XMPPConnection類用于創建1個到XMPP服務器的連接,代碼例子以下:
// 創建1個到jabber.org
服務器的連接
AbstractXMPPConnection conn1 = new XMPPTCPConnection("username", "password", "jabber.org");
conn1.connect();
// 創建1個到jabber.org
服務器指定端口的連接
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword("username", "password")
.setServiceName("jabber.org")
.setHost("earl.jabber.org")
.setPort("8222)
.build();
AbstractXMPPConnection conn2 = new XMPPTCPConnection(config);
conn2.connect();
注意,在連接到XMPP
服務器時,如果采取默許設置,會使用最大程度的安全,包括TLS加密的利用。ConnectionConfiguration類通過了對創建的連接的高級控制,比如可以開啟或關閉加密。
以后可查看文檔《XMPPConnection Management》:
https://github.com/igniterealtime/Smack/blob/master/documentation/connections.html
(目前還是無效的)
1旦你創建了1個連接后,你應當調用XMPPConnection.login()方法進行
服務器登錄。1旦登錄后,你就能夠通過創建Chat對象或GroupChat對象開始與其他用戶聊天了。
7、Roster(名單)的用法Roster用于跟蹤其他用戶是不是在線。用戶的聯系人可以以分組的方式進行組織,比如“好友”、“同事”。然后就能夠查看組中的每一個用戶是不是在線了。
要檢索Roster,使用XMPPConnection.getRoster()方法。Roster類允許你查找所有的Roster實體,和他們屬于哪一個組,每一個實體當前的在線狀態。
8、讀寫Packet(數據包)
從客戶端發送到XMPP服務器的每條消息都稱為1個Packet(數據包)。org.jivesoftware.smack.packet庫中包括了XMPP支持的(消息Message、在線狀態Presence、IQ)3種不同的基本數據包類型的封裝類。而像Chat或GroupChat這樣的類則提供了更高層的結構來管理數據包的自動創建和發送。但是,開發者還是可以直接創建和發送數據包的。
下面的代碼就是修改自己的在線狀態,讓其他人知道你不在線。
// 創建新在線狀態對象,并設為離線狀態
Presence presence = new Presence(Presence.Type.unavailable);
presence.setStatus("Gone fishing");
// 發送數據包(假定我們已有XMPPConnection的連接實例con
con.sendPacket(presence);
Smack提供了兩種讀取到來的數據包的方式:PacketListener(包監聽器)和PacketCollector(包搜集器)。
二者都使用PacketFilter實例來判斷應當處理哪個數據包。
PacketListener(包監聽器)用于事件風格的編程,而PacketCollector(包搜集器)有1個數據包的結果隊列,你可以做輪詢或阻塞等操作。
也就是說,如果你想在數據包到來時履行1些動作,那末包監聽器很合適。如果你想等待指定的數據包的到來,那末包搜集器很合適。
包搜集器和包監聽器都使用Connection連接實例創建。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈