2012-04-02 3 views
1

Smack을 사용하여 페이로드가있는 항목을 pubsub 노드에 게시하려고했지만 지금까지 관리하지 않았습니다. 노드를 생성하고 페이로드를 전달하도록 구성을 설정했습니다 (setDeliverPayloads = true). 페이로드로 항목을 보내려면 send 메서드를 사용하고 있습니다.Smack을 사용하여 페이로드를 사용하여 항목을 Pubsub 노드에 게시

node.send(new PayloadItem(this.clientNodeName+"*" + System.currentTimeMillis(), new SimplePayload("my book", "books:pubsub:simple", ""))); 

그럼에도 불구하고 항목은 페이로드없이 게시됩니다. 구성된 IQ에는 페이로드도 없습니다. 나는 헤로인의 디버그 패널

에서 볼 수 있듯이이 헤로인으로 구성하고, pubsub 서비스로 전송되는 것입니다

<iq id="1ha20-11" to="pubsub.127.0.0.1" type="set"> 
    <pubsub xmlns="http://jabber.org/protocol/pubsub"> 
    <publish node="autoIncrement"> 
     <item id="autoIncrement*1333380921970"/> 
    </publish> 
    </pubsub> 
</iq> 

내가이 문제를 해결하기 위해 어떤 도움을 주셔서 감사합니다 것입니다 (분명히 더 페이로드 없음). 물론 네이티브 IQ 메시지를 계속 사용할 수는 있지만 가능한 한 많이 smack API에서 PubSubManager를 사용하여이를 피하기 위해 노력할 것입니다.

답변

5

위의 코드는 아무런 문제가 없습니다. 유일한 문제는 위에서 제공된 예제는 페이로드가 없기 때문에 (SimplePayload ("my book", "books : pubsub : simple", "")) 매김은 항목의 페이로드를 전혀 표시하지 않는다는 것입니다.

페이로드가 지정되면 게시 된 항목에 포함됩니다. 여기

는 페이로드

node.send(new PayloadItem(this.clientNodeName+"*" + System.currentTimeMillis(), new SimplePayload(load, "stage:pubsub:simple", "<book xmlns='pubsub:test:book'><title>Lord of the Rings</title></book>"))); 

로 항목을 게시하기위한 코드이며,이

<iq id="OIqU4-12" to="pubsub.stage.127.0.0.1" type="set"> 
     <pubsub xmlns="http://jabber.org/protocol/pubsub"> 
     <publish node="autoIncrement"> 
      <item id="autoIncrement*1333438199718"> 
      <book xmlns="pubsub:test:book"> 
       <title>Lord of the Rings</title> 
      </book> 
      </item> 
    </publish> 
    </pubsub> 
</iq> 
+0

감사 남자, 당신은 삶의 맛있는 Jabbered 서버로 전송 예상 IQ입니다) – Gurupriyan