无法加入ejabberd公开MUC房间问题求助
解决XMPP MUC加入时“昵称不能为空”的错误
问题原因
你当前的请求使用了<nick xmlns="http://jabber.org/protocol/nick">元素传递昵称,但XMPP MUC(多用户聊天)的房间加入规范中,服务器不会识别这个单独的全局昵称元素,而是要求通过标准方式传递房间昵称。
解决方法
方法1:在to属性中指定昵称(推荐)
将昵称作为房间JID的资源部分,直接拼在to属性值末尾:
<presence from="myJid@chatserver.com" to="roomname@conference.chatserver.com/MyNickname" id="17cb115c-2a7a-4aa6-8498-458a14c13f4d"> </presence>
方法2:通过MUC扩展元素传递昵称
保留原to属性,在<x xmlns="http://jabber.org/protocol/muc">扩展标签内添加<nick>子元素:
<presence from="myJid@chatserver.com" to="roomname@conference.chatserver.com" id="17cb115c-2a7a-4aa6-8498-458a14c13f4d"> <x xmlns="http://jabber.org/protocol/muc"> <nick>MyNickname</nick> </x> </presence>
补充说明
<nick xmlns="http://jabber.org/protocol/nick">属于XEP-0172定义的全局昵称扩展,用于在整个XMPP网络中标识用户的通用昵称,而非MUC房间内的专属昵称,因此MUC服务器不会读取该元素的值,导致返回“昵称不能为空”的错误。
内容的提问来源于stack exchange,提问作者Kunto Fullstack
相关产品推荐
相关产品推荐

