希望有人能帮助我理解我在尝试加入已存在的公共(public) MUC 房间时遇到的错误代码 404。
这是 XMPP 序列:
对房间进行智商查询
<iq from='bridgetest1@jabber.org/BridgeClient' id='0da67229d8f55e3b' to='sdfsdfsdf@conference.jabber.org' type='get'> <query xmlns='http://jabber.org/protocol/disco#info'/> </iq>
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>
尝试使用 Presence 加入房间
<presence from='bridgetest1@jabber.org/BridgeClient' id='0da67229d8f55e3b' to='sdfsdfsdf@conference.jabber.org/bbbb'> <x xmlns='http://jabber.org/protocol/muc'/> </presence>
加入响应(错误 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/