2013-04-05 3 views
5

入手方法ディスカッションMUC室の歴史MultiUserChatから? aSmackライブラリを使用してMultiUserChatのインスタンスと部屋を作成することができました。今度は、部屋で発生したすべての以前の会話を表示したいと思います。aSmackを使ってMultiUserChatルームのDiscussionHistoryを取得するには?

誰も同じ経験をしている人は私を助けてください。私はGoogleがこれについて多くを検索しましたが、まだ私はこれに関する適切なドキュメンテーション/説明を取得しませんでした。

答えて

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をアプリケーション全体でシングルインスタンスとして維持する必要がありました。 –

+0

ここであなたのコードを使用して私はヒストリ(つまり最初のメッセージ)からただ一つのメッセージを得ています。私も 'history.setMaxStanzas(20)'を設定しました。私はこの歴史から最後の20のメッセージを取得したい。これについて私を助けてください。 –

+1

nextMessageを複数回呼び出すだけです。各呼び出しは次のメッセージを取得します。最終的には、すべての履歴メッセージを取得し、次のリアルタイムのメッセージを待つことをブロックします。 – Robin

関連する問題