加入时XMPP MUC返回错误代码404,但它存在

时间:2013-03-18 23:25:10

标签: xmpp chat

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

这是XMPP序列:

  1. 在房间

    上执行IQ查询
    <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查询的响应

    <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>
    
  5. 有人知道为什么我不能加入房间吗?我刚刚加入它创建了临时房间,但是在我加入之后我就无法重新进入,即使IQ结果显示它是'muc_open'。

1 个答案:

答案 0 :(得分: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>