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

标签 xmpp chat

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

这是 XMPP 序列:

  1. 对房间进行智商查询

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

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

最佳答案

更新:我正在查看 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>

关于XMPP MUC加入时返回错误码404,但存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15488843/

相关文章:

java - 如何获取多用户聊天昵称的 Jabber ID

iphone - 来自 XMPP iPhone 的用户配置文件

iphone - 如何从XMPP的NSData和头像数据创建UIImage?

c - 尝试使用 C 将结构复制到 fifo 时出现问题

android - 使用 Firebase 的一对一 Android 聊天

javascript - 按 Enter 键提交消息?

java - 是否可以使用公共(public) XMPP 服务器创建私有(private)聊天室?

python - 如果可能的话,如何阻止打印到 stdout 打断输入的内容?

ios - 如何同时观察两个用户之间的所有 firebase 数据库事件?

jakarta-ee - Java EE Servlet 作为 XMPP 连接器的容器