2011-06-27 50 views
4

我正在使用XMPP smack api連接到Openfire服務器。我正在嘗試查詢服務器,以提前返回所有可用的公共房間而不知道房間的名稱。這樣做的目的是讓我的客戶可以顯示所有可用公共房間的列表並相應地加入他們。 Smack Extensions Documentation提供了幾個從服務器返回房間信息的例子,但它們都不符合我的需要。smack api獲取openfire服務器上的所有公共房間

一個示例要求您事先知道房間的名稱,如果您想要顯示客戶端不知道的可用房間,這是不好的。這個例子的代碼如下。

// Discover information about the room [email protected] 
    RoomInfo info = MultiUserChat.getRoomInfo(conn, "[email protected]"); 
    System.out.println("Number of occupants:" + info.getOccupantsCount()); 
    System.out.println("Room Subject:" + info.getSubject()); 

另一個例子可以讓你查詢的客房,所有的聯繫人都目前,這似乎是越來越房間名稱非常間接的方式,有留下一些房間出來的潛力。由於XMPP是基於服務器的協議,而不是基於p2p的協議,因此這似乎不是完成此操作的最合乎邏輯的方式(但如果我錯了,請糾正我)。此代碼示例如下

Iterator joinedRooms = MultiUserChat.getJoinedRooms(conn, "[email protected]/Smack"); 

如果有人既可以請給我一個鏈接,或者提供如何完成這一點,將不勝感激的例子。

回答

2

它看起來像MultiUserChat.getHostedRooms()是你在找什麼。

+0

謝謝你的工作完美,我沒有在例子中看到它,並且必須在jdoc中忽略它。 – pat8719

+1

我認爲hostedrooms應該給你發送用戶創建的房間,但是用戶加入但是沒有託管的房間怎麼樣' – ozmank

+0

@ozmank使用'getJoinedRooms'爲那個 –

相關問題