XmppFramework:如何将用户注册为订阅者

时间:2016-09-04 09:57:30

标签: xmpp ejabberd xmppframework

我有一个使用此代码创建的节点:

xmppPubSub?.createNode(name, withOptions: ["pubsub#notification_type": "normal", "pubsub#send_last_published_item": "never", "pubsub#publish_model" : "open", "pubsub#max_items" : "1000000"])

任何人都可以写,我该如何对用户" pubsub#publish_model" :"发布商"?我想只启用一些用户写入节点,我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:0)

嗨请检查以下代码如何订阅节点以及我们如何获得有效负载消息,只要有人订阅用户发送内容。另外从here获取xmpp官方网站的概述。

LeafNode XMPP_PUB_SUB_LEAF;
SimplePayload item = null;
LeafNode node;


class ItemEventCoordinator implements ItemEventListener {
    @Override
    public void handlePublishedItems(ItemPublishEvent items) {

        Log.e("tag", "ItemPublishEvent ::" + items.getItems());

    }
}


PubSubManager mgr = new PubSubManager(XMPP.getInstance()
                    .getConnection(acitiviy));
//  ConfigureForm form = new ConfigureForm(FormType.submit);
//  form.setAccessModel(AccessModel.open);
//  form.setDeliverPayloads(true);
//  form.setNotifyRetract(true);
//  form.setPersistentItems(true);
//  form.setPublishModel(PublishModel.open);
try {
//  LeafNode leaf = (LeafNode) mgr
//  .createNode("ABC", form);
LeafNode leaf = (LeafNode) mgr.getNode("ABC");
leaf.addItemEventListener(new ItemEventCoordinator());  
//leaf.getSubscriptionOptions(XMPP.getInstance().getConnection(acitiviy)
// .getUser());

//leaf.unsubscribe(XMPP.getInstance().getConnection(acitiviy)
//.getUser());

leaf.subscribe(XMPP.getInstance().getConnection(acitiviy)
                        .getUser());

leaf.send(new PayloadItem(XMPP.getInstance().getConnection(acitiviy)
                        .getUser(),
                        new SimplePayload("Online", "stage:pubsub:simple",
                                "<book xmlns='pubsub:test:book'>   <title>Online</title></book>")));

for (int i = 0; i < leaf.getAffiliations().size(); i++) {

    Log.d("tag", "getAffiliations 111::"
                            + leaf.getAffiliations().get(i)
                                    .getElementName());

}

for (int i = 0; i < leaf.getSubscriptions().size(); i++) {

                    // Log.e("tag", "getSubscriptions 111::"
                    // + leaf.getSubscriptions().get(i).getJid());

}

try {
 List<Subscription> listSubs = mgr.getSubscriptions();
                    for (int i = 0; i < listSubs.size(); i++) {

// Log.e("tag", "Subscription ::"
// + listSubs.get(i).getJid());

}
} catch (XMPPException e) {
System.out.println(e.getMessage());
}

感谢希望这有助于您了解pubsub。

答案 1 :(得分:0)

我找到了解决方案,我必须发布这样的流:

<iq type='set'
    from='hamlet@denmark.lit/elsinore'
    to='pubsub.shakespeare.lit'
    id='ent2'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub#owner'>
    <affiliations node='princely_musings'>
      <affiliation jid='bard@shakespeare.lit' affiliation='publisher'/>
    </affiliations>
  </pubsub>
</iq>