如何在 asmack 中使用 PubSubManager 发布和解析
Posted
技术标签:
【中文标题】如何在 asmack 中使用 PubSubManager 发布和解析【英文标题】:How to Publish and parse back with PubSubManager in asmack 【发布时间】:2014-02-11 13:28:43 【问题描述】:我正在使用 asmack lib 和 openfire 作为 xmpp 服务器在 android 平台上开发 IM 应用程序。由于用户在与服务器断开连接时无法在聊天室中持续存在,我决定实现 PubSubManager 概念。而且我浏览了很多链接,但对于使用 Payload 发布和从有效负载中检索消息无法得到任何好的解释。这是我创建和订阅该节点并发布有效负载的代码....
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);
发布此项目时我没有问题。发布此项目时,我的聊天侦听器被触发(因为我在该节点中订阅了自己)使用消息对象,我无法从中获取消息正文(null)。那么我的发布过程是否正确,如果是,接收时如何找回呢?
【问题讨论】:
【参考方案1】:您不想通过聊天接收消息,毕竟它实际上不是聊天消息。
查看pubsub documentation,特别是接收发布订阅消息
部分【讨论】:
以上是关于如何在 asmack 中使用 PubSubManager 发布和解析的主要内容,如果未能解决你的问题,请参考以下文章
如何检查用户是不是已在 ejabberd 服务器中注册或未使用 asmack
如何在 Android aSmack 中实现 DeliveryReceiptManager
如何访问在android asmack库中具有私有访问修饰符的访问IQTypeFilter?