3

希望有人可以帮助我理解我在尝试加入已经存在的公共 MUC 房间时遇到的错误代码 404。

这是 XMPP 序列:

  1. 对房间执行 IQ Query

    <iq from='bridgetest1@jabber.org/BridgeClient' id='0da67229d8f55e3b' 
    to='sdfsdfsdf@conference.jabber.org' type='get'> 
      <query xmlns='http://jabber.org/protocol/disco#info'/>
    </iq>
    
  2. 来自 IQ Query 的响应

    <iq from='sdfsdfsdf@conference.jabber.org' to='bridgetest1@jabber.org/BridgeClient' type='result' id='0da67229d8f55e3b'>
    <query xmlns='http://jabber.org/protocol/disco#info'>
        <identity category='conference' name='sdfsdfsdf' type='text'/>
        <feature var='http://jabber.org/protocol/muc'/>
        <feature var='http://jabber.org/protocol/muc#unique'/>
        <feature var='muc_temporary'/><feature var='muc_open'/>
        <feature var='muc_public'/><feature var='muc_unsecured'/>
        <feature var='muc_temporary'/><feature var='muc_anonymous'/>
      <x xmlns='jabber:x:data' type='result'>
        <field var='FORM_TYPE' type='hidden'>
          <value>http://jabber.org/protocol/muc#roominfo</value>
        </field>
        <field label='Subject Modifiable' var='muc#roominfo_subjectmod' type='boolean'>
          <value>0</value>
         </field><field label='Current Occupants' var='muc#roominfo_occupants' type='text-single'>
          <value>1</value>
         </field>
      </x>
    </query></iq>
    
  3. 尝试使用 Presence 加入房间

    <presence from='bridgetest1@jabber.org/BridgeClient' id='0da67229d8f55e3b' to='sdfsdfsdf@conference.jabber.org/bbbb'>
       <x xmlns='http://jabber.org/protocol/muc'/>
    </presence>
    
  4. 加入响应(错误 404)

    <presence from='sdfsdfsdf@conference.jabber.org' to='bridgetest1@jabber.org/BridgeClient' type='error' id='0da67229d8f55e3b'>
    <x xmlns='http://jabber.org/protocol/muc'/>
       <error code='404' type='cancel'>
         <item-not-found xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/>
       </error>
    </presence>
    

有人知道为什么我不能加入房间吗?我刚刚通过加入它创建了那个临时房间,但是在我加入它之后我无法重新进入,即使 IQ 结果显示它是“muc_open”。

4

1 回答 1

4

更新:我正在查看 MUC XEP-0045 文档,发现以下段落解释了我的问题。

http://xmpp.org/extensions/xep-0045.html#createroom-instant

我没有意识到仅仅加入一个房间并没有完成这个过程,你仍然必须告诉服务器你想要接受所有默认设置以及即时房间部分,否则它会保持锁定状态。

作为记录,在创建房间(并成为所有者)之后发送下面的代码片段可以解决我的问题。

    <iq from='crone1@shakespeare.lit/desktop'
        id='create1'
        to='coven@chat.shakespeare.lit'
        type='set'>
        <query xmlns='http://jabber.org/protocol/muc#owner'>
            <x xmlns='jabber:x:data' type='submit'/>
        </query>
    </iq>
于 2013-03-19T02:08:22.630 回答