2013-04-05 2 views
5

토론하기 MUC 룸의 역사MultiUserChat? aSmack 라이브러리를 사용하여 MultiUserChat 인스턴스와 룸을 만들 수 있습니다. 이제 방에서 발생한 모든 이전 대화를 표시하려고합니다.aSmack을 사용하여 MultiUserChat 방의 DiscussionHistory를 얻는 방법?

같은 경험을 가진 사람이면 누구든지 도와주세요. 나는 이것에 관해 많은 것을 수색했다. 그러나 나는 아직도 이것에 대한 적절한 문서/설명을 얻지 못했다.

답변

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

관련 문제