0

我正在尝试使用 XMPP 和 BOSH 管理器在 ejabber 中创建一个节点。但我想知道在创建节点节中需要传递哪些值。

以下是创建节点节的格式,但我无法创建它,所以任何人都可以告诉我需要传入哪些值<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 url 是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>

我也尝试过使用文件路径,但我的创建失败并被禁止

<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>
4

1 回答 1

2

好吧,首先是相关文档

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

可能是不允许发送 iq 的用户创建节点,或者服务不支持它。如果有的话,只能根据错误节来判断,所以如果上述方法不起作用,请发布您收到的错误。

于 2012-08-01T15:43:37.787 回答