Xmpp ejabberd书签取代以前的书签
我使用ejabberd作为聊天服务器。当我发送请求时 (示例来自)Xmpp ejabberd书签取代以前的书签,xmpp,publish-subscribe,ejabberd,bookmarks,Xmpp,Publish Subscribe,Ejabberd,Bookmarks,我使用ejabberd作为聊天服务器。当我发送请求时 (示例来自) 它很好用。但是,如果我发送一个类似的请求来存储另一个聊天室,它就会替换这个聊天室。即使我更改了项目“id”。有关于如何存储多个会议的想法吗?书签规范正在利用个人事件协议。我们在ejabberd中使用默认配置为PEP所做的假设是,这些特殊PubSub节点上保留的项目数为“1” 您可以通过发送以下节点配置请求来检查这一点: <iq type='get' id='config1'> <pubsub xml
它很好用。但是,如果我发送一个类似的请求来存储另一个聊天室,它就会替换这个聊天室。即使我更改了项目“id”。有关于如何存储多个会议的想法吗?书签规范正在利用个人事件协议。我们在ejabberd中使用默认配置为PEP所做的假设是,这些特殊PubSub节点上保留的项目数为“1” 您可以通过发送以下节点配置请求来检查这一点:
<iq type='get'
id='config1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub#owner'>
<configure node='storage:bookmarks'/>
</pubsub>
</iq>
您将看到回复显示最大项目数为“1”:
<iq from="mremond@localhost" type="result" to="mremond@localhost/MacBook-Pro-de-Mickael" id="config1">
<pubsub xmlns="http://jabber.org/protocol/pubsub#owner">
<configure node="storage:bookmarks">
<x xmlns="jabber:x:data" type="form">
...
<field type="text-single" label="Max # of items to persist" var="pubsub#max_items">
<value>1</value>
</field>
...
</x>
</configure>
</pubsub>
</iq>
...
1.
...
这确实意味着你只需要设置一个书签。但是,它不会阻止您在同一集中存储多个书签,如下所示:
<iq type='set' id='pip1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<publish node='storage:bookmarks'>
<item id='current'>
<storage xmlns='storage:bookmarks'>
<conference name='Bookmark1'
autojoin='false'
jid='room1@conference.shakespeare.lit'>
<nick>Mynick1</nick>
</conference>
<conference name='Bookmark2'
autojoin='true'
jid='room2@conference.shakespeare.lit'>
<nick>Mynick2</nick>
</conference>
</storage>
</item>
</publish>
<publish-options>
<x xmlns='jabber:x:data' type='submit'>
<field var='FORM_TYPE' type='hidden'>
<value>http://jabber.org/protocol/pubsub#publish-options</value>
</field>
<field var='pubsub#persist_items'>
<value>true</value>
</field>
<field var='pubsub#access_model'>
<value>whitelist</value>
</field>
</x>
</publish-options>
</pubsub>
</iq>
Mynick1
Mynick2
http://jabber.org/protocol/pubsub#publish-选择权
真的
白名单
ejabberd将成功回复:
<iq from="mremond@localhost" type="result" to="mremond@localhost/MacBook-Pro-de-Mickael" id="pip1">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<publish node="storage:bookmarks">
<item id="current"/>
</publish>
</pubsub>
</iq>
然后,您可以查询书签并检查该书签集中是否有两个书签:
<iq type='get' id='retrieve1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='storage:bookmarks'/>
</pubsub>
</iq>
回应如下:
<iq from="mremond@localhost" type="result" to="mremond@localhost/MacBook-Pro-de-Mickael" id="retrieve1">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="storage:bookmarks">
<item id="current">
<storage xmlns="storage:bookmarks">
<conference name="Bookmark1" autojoin="false" jid="room1@conference.shakespeare.lit">
<nick>Mynick1</nick>
</conference>
<conference name="Bookmark2" autojoin="true" jid="room2@conference.shakespeare.lit">
<nick>Mynick2</nick>
</conference>
</storage>
</item>
</items>
</pubsub>
</iq>
Mynick1
Mynick2
您可以在同一集中存储多个书签。只需一次上传所有内容。因此,要更新书签集,您应该先读取它,然后存储更新的版本,而不是发送增量更改
也就是说,我读了几遍规范(和)。我没有看到关于PEP节点上项目数量的示例或参考。所有示例仅显示一项。政治公众人物的目标是广播一个州的最新情况。在大多数规范中,假设只涉及一个项目(一个化身、一个geoloc等)。但是,如果我们能在规范中找到关于可使用项目数量的明确内容,我们将很乐意修改我们的假设。您能告诉我们您使用的ejabberd版本以及如何配置pubsub吗?版本是15.06,我刚刚用pubsub配置更新了问题。记住,pubsub工作得很好。问题是我只能存储一个会议。我想知道在每次请求添加会议时是否有什么需要更改的地方您好!谢谢你的回答。我会尽快尝试,看看它是否有效。仅从外观上看,我可以看出它可能会起作用,因为您正在存储一个包含2个会议的书签。在我的特殊情况下,我存储的是第一个,但存储的是第二个(只有一个会议的请求),它将替换上一个。要更新书签集:您应该先读取它,然后存储更新的版本,而不是发送增量更改。更新了我的答案以反映此评论。这正是我的问题,我不知道增量更改不起作用,非常感谢!
<iq type='get' id='retrieve1'>
<pubsub xmlns='http://jabber.org/protocol/pubsub'>
<items node='storage:bookmarks'/>
</pubsub>
</iq>
<iq from="mremond@localhost" type="result" to="mremond@localhost/MacBook-Pro-de-Mickael" id="retrieve1">
<pubsub xmlns="http://jabber.org/protocol/pubsub">
<items node="storage:bookmarks">
<item id="current">
<storage xmlns="storage:bookmarks">
<conference name="Bookmark1" autojoin="false" jid="room1@conference.shakespeare.lit">
<nick>Mynick1</nick>
</conference>
<conference name="Bookmark2" autojoin="true" jid="room2@conference.shakespeare.lit">
<nick>Mynick2</nick>
</conference>
</storage>
</item>
</items>
</pubsub>
</iq>