在xmpp中创建一个pubsub节点

时间:2012-08-01 14:20:48

标签: xmpp publish-subscribe ejabberd bosh

我正在尝试使用XMPP和BOSH Manager在ejabber中创建一个节点。但我想知道需要在create node节中传递什么值。

以下是create node节的格式,但我无法创建它,所以任何人都可以告诉我需要传递哪些值 在<formvalue> <tovalue> <nodevalue>

<iq type='set'
    from='<fromvalue>'
    to='<tovalue>'
    id='create1'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <create node='<nodevalue>'/>
  </pubsub>
</iq>

注意: 我使用的是ejabbered,而BOSH的网址是http://example.com:5280/xmpp-http-bind

我试过这个,我得到功能未实现的错误

<body rid='95507820' xmlns='http://jabber.org/protocol/httpbind' sid='5c4fbfe432babab58fe5e39367fc1704c06ddfd7'>
   <presence xmlns='jabber:client'>
      <priority>-1</priority>
   </presence>
<iq to='example.com' type='set' xmlns='jabber:client' id='3742:sendIQ'>
   <pubsub xmlns='http://jabber.org/protocol/pubsub'>
     <create/>
     <configure/>
  </pubsub>
</iq>
</body>

我也尝试了另一种方式,在这种情况下,我正在通过jid-malformed 创建失败

<body rid='2037203608' xmlns='http://jabber.org/protocol/httpbind' sid='2a198251db476ef0490a4d3f591468b69edaf35b'>
   <presence xmlns='jabber:client'>
     <priority>-1</priority>
   </presence>
<iq to='example.com' type='set' xmlns='jabber:client' id='7398:sendIQ'>
  <pubsub xmlns='http://jabber.org/protocol/pubsub'>
    <create node='draw'/>
  </pubsub>
 </iq>

我也试过了 filepath 但是我的创建失败了,禁止

<body rid='358865391' xmlns='http://jabber.org/protocol/httpbind' sid='0f7cf72754f0fc3b0b04c8c0bb488e816380d741'>
    <presence xmlns='jabber:client'>
        <priority>-1</priority>
    </presence>
    <iq to='pubsub.example.com' type='set' xmlns='jabber:client' id='8556:sendIQ'>
        <pubsub xmlns='http://jabber.org/protocol/pubsub'>
            <create node='/home/localhost/john/draw/'/>
        </pubsub>
    </iq>
</body>

1 个答案:

答案 0 :(得分:2)

嗯,这里有一个相关的documentation

  • from是发送iq的用户的jid,发送iq时总是如此。
  • to是您要为其创建节点的发布 - 订阅服务。典型值为pubsub.example.com,但这实际上取决于服务器的配置。
  • node获取您创建的节点的ID。在某些服务器配置中,这具有语义含义(通常是路径),但请尝试使用mynode

可能不允许发送iq的用户创建节点,或者服务不支持它。人们只能根据错误节来判断,如果有的话,如果上述情况不起作用,请发布你得到的错误。