我有一个使用此代码创建的节点:
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" :"发布商"?我想只启用一些用户写入节点,我该怎么办?
谢谢!
答案 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>