如何用asmack发布和解析PubSubManager

问题描述:

我正在使用asmack lib和openfire作为xmpp服务器,在Android平台上开发IM应用程序。由于用户在与服务器断开连接时无法保持聊天室,因此我决定实施PubSubManager概念。我经历了很多链接,但无法得到任何有关Payload发布和从有效载荷中检索消息的好解释。这里是我的创建和订阅自己该节点和发布的有效载荷代码....如何用asmack发布和解析PubSubManager

ConfigureForm form = new ConfigureForm(FormType.submit); 
form.setAccessModel(AccessModel.open); 
form.setDeliverPayloads(true); 
form.setNotifyRetract(true); 
form.setNotifyDelete(true); 
form.setPublishModel(PublishModel.open); 

leafNode = pubSubManager.createNode("testnode"); 
leafNode.sendConfigurationForm(form); 

leafNode.subscribe(MY_JID); 

SimplePayload payload = new SimplePayload(
      "elementname", 
      "pubsub:testnode:elementname", 
      "<elementname>my content</elementname>"); 
PayloadItem<SimplePayload> item = new PayloadItem<SimplePayload>(
      null, payload); 

leafNode.publish(item); 

我已经没有任何问题,而发布此item.When发布此,我的聊天监听器被触发(因为我订阅我自己在该节点中)与一个消息对象,从中我无法获得消息正文(null)。因此,无论我的发布过程是否正确,如果可以,我如何在接收时取回它。

你不想通过聊天接收消息,毕竟它实际上不是聊天消息。

pubsub documentation,特别是部分接收发布订阅消息