2013-04-05 42 views

回答

14
DiscussionHistory history = new DiscussionHistory(); 
history.setSince(date); 

muc.join(nickname, null, history, SmackConfiguration.getReplyTimeout()); 

// Get historical message; 
Message oldMsg = muc.nextMessage(timeout); 

您還可以使用

history.setMaxChars() 
history.setMaxStanzas() 
history.setSeconds() 

一些例子是在測試代碼。檢查測試testDiscussionHistory

http://fisheye.igniterealtime.org/browse/smack/trunk/test/org/jivesoftware/smackx/muc/MultiUserChatTest.java?hb=true

+0

這是它需要維持同一個實例爲MUC,或者我們可以製造出任何我們想要的。如果單個實例需要如何在整個應用程序中將該MUC保持爲單個實例。 – 2013-04-10 04:45:59

+0

這裏通過使用你的代碼我從歷史中只收到一條消息(即第一條消息)。即使我設置了'history.setMaxStanzas(20)'。我想從這段歷史中獲得最後20條消息。請幫助我。 – 2013-04-12 05:02:49

+1

您只需多次調用nextMessage。每個呼叫都會檢索下一條消息。最終,您將檢索所有歷史信息並阻止等待下一個實時信息。 – Robin 2013-04-14 19:00:31

相關問題