2013-10-14 5 views
0

XMPP 통신을 제공하기 위해 백그라운드에서 Tigase 서버를 사용하여 채팅 응용 프로그램을 개발 중입니다. 게다가 내가 응용 프로그램에서 라이브러리로 smack/asmack을 사용하고 있습니다.Tigase OfflineMessages 클래스 오버라이드

모든 메시지가 사용자들 사이에서 보내지기 때문에 구현하고 싶은 기능을 위해 smack의 Presence.setProperty() 메소드를 통해 패키지 확장을 포함합니다. 두 사용자가 모두 온라인 상태 일 때 제대로 보내집니다. 사용자 중 한 명이 오프라인 일 때 Tigase 서버는 해당 메시지를 저장 한 다음 사용자가 다시 온라인 상태가되면 전달합니다. 문제는 Tigase가 패킷 확장자를 포함한 메시지를 저장하지 않기 때문에 사용자가 다시 온라인 상태 일 때 메시지 전송의 "부분"만 수신한다는 것입니다.

Tigase 소스를 찾았으며 xmpp.impl 패키지의 OfflineMessages 클래스 부분에 위치를 찾았습니다. 여기서 msgoffline 플러그인이 확장 프로그램을 사용하여 오프라인 메시지를 저장하기 위해 코드 줄을 삽입해야합니다.

프로젝트의 전체 소스 코드를 작성하지 않고 Tigase jar 파일의 OfflineMessages 클래스를 재정의하는 가장 쉬운 방법은 무엇입니까?

우분투 서버에서는 Tigase-5.1.5-b3164 버전을, IDE에서는 Eclipse를 사용하고 있습니다.

+0

'OfflineMessages.java'에 삽입 할 코드 줄은 무엇입니까? – Flow

+0

나는 Artur가 말한 것을하려고하고있다 – R3dH4nd5

답변

0

Smack 라이브러리를 알지 못하기 때문에 Presence.setProperty() 메소드가 어떤 역할을하는지 알지 못합니다. 그러나 프레즌스 패킷 (프레 젠스 상태에 여분의 페이로드를 추가)에 대한 작업을 수행하면 오프라인 메시지 저장소에 저장되지 않으므로 오프라인 메시지 저장소에 저장되지 않습니다. savePacketForOffLineUser를 시작 부분에 IF 큰 함께 :

당신이 (특정 존재 패킷 같은) 지금 저장하는 것보다 그 다음 방법이있다 이상의 서로 다른 데이터를 저장하기 위해 OfflineMessages을 수정하려면

. 여기서 오프라인 저장소에 저장할 내용을 결정합니다.

하지만 모든 프리젠 테이션을 저장하지 않도록주의하십시오. 서비스와 데이터베이스가 삭제됩니다.

자신 만의 플러그인을 추가하는 가장 좋은 방법은 기존 Tigase 플러그인 (OfflineMessgae)의 복사본을 만들고, 기본 설정으로 수정하고, 플러그인 이름과 플러그인 ID를 변경하는 것입니다. 그런 다음 코드가있는 항아리를 Tigase jars 디렉토리에 넣고 구성을 수정하여 기본 매개 변수 대신에 plying을로드합니다. 이렇게하면 Tigase 소스를 다시 컴파일 할 필요가 없으며 새 버전으로 쉽게 업데이트 할 수 있습니다.

+0

고맙지 만, 소스를 컴파일하지 않고 Tigase 플러그인을 빨리 시작하고 빌드 할 수 있습니까? 이것에 관한 몇 가지 팁? – R3dH4nd5