2017-09-28 7 views
10

PubSub에서 오프라인 메시지를받는 방법? Smack 라이브러리 사용.PubSub 알림을 관리하는 방법을 XMPP에서 오프라인으로 보내시겠습니까?

// Create a pubsub manager using an existing XMPPConnection 
PubSubManager mgr = PubSubManager.getInstanceFor(con); 

// Get the node 
LeafNode node = mgr.getNode("testNode"); 

List<? extends Item> items = node.getItems(100); 

그러나 node.getItems(100) 반환 너무 온라인과 오프라인이 될 수있는 마지막 100 개의 메시지 : 검색 한 후 나는 다음과 같습니다 해답을 발견했다.

1) pubsub에서 smack을 사용하여 온라인 및 오프라인 메시지를 추적하는 방법은 무엇입니까?

2) smack을 사용하여 pubsub에서 읽지 않은 메시지 수를 얻을 수 있습니까? 그렇다면 어떻게 달성 할 수 있습니까?

3) who (게시자)가 노드에서이 메시지를 보내는 것을 아는 방법 3)

herehere의 Smack 및 PubSub의 설명서를 살펴 보았지만 내 쿼리와 관련된 솔루션을 찾지 못했습니다. 그래서 누구든지이 문제를 해결하도록 도울 수 있습니까?

답변

3

1) 을 사용하여 pubsub에서 온라인 및 오프라인 메시지 추적 방법 1)

PubSub 항목 ID를 사용하는 것이 좋습니다.

2) smack을 사용하여 pubsub에서 읽지 않은 메시지 수를 얻을 수 있습니까? 그렇다면 어떻게 달성할까요?

PubSub 노드에는 구독하지 않은 읽지 않은 메시지 수가 없습니다.

PubSub 노드에서 마지막 항목을받은 이후로 모든 새 항목을 따라 잡으려면 대개 마지막 항목의 ID를 기억하고 PubSub 노드에서 최신 항목을 모두 쿼리하십시오. 불행히도 (현재) 특정 ID 뒤에 새로운 항목에 대한 PubSub 노드를 쿼리하는 방법은 없습니다.

하지만 노드에 가입 한 경우 서비스는 오프라인 상태에서도 새 항목에 대해 알려줍니다. 그리고 서버가 오프라인 메시지를 저장하면 결국 받게됩니다.

3) who (게시자)가 노드에서이 메시지를 보내는 것을 알 수있는 방법은 무엇입니까?

불행히도 항목을 게시 한 엔티티의 JID에는 신뢰할 수있는 방법이 없습니다. 이것 역시 XEP 확장으로 수정 될 수 있습니다.