使用用户'username @ localhost'连接到openfire服务器后 我正在尝试创建一个群聊即时空间,所以首先 我按照此处的规定发送Presence Stanza:
<presence from='username@localhost' to='testroom@conference.localhost' xmlns='jabber:client'>
<x xmlns='http://jabber.org/protocol/muc'></x>
</presence>
但是回复总是错误的:
<presence ... from='testroom@conference.localhost type='error'>
<x xmlns='http://jabber.org/protocol/muc></x>
<error code='400' type='modify'>
<bad-request xmlns="urn:ietf:params:xml:ns:xmpp-stanza"></bad-request>
</error>
</presence>
我是否需要对Openfire进行任何配置才能使其正常工作?我知道你可以使用Openfire Gui创建一个群聊室,并且工作正常,但当我尝试加入聊天室时,我得到了同样的错误。
答案 0 :(得分:6)
您需要在房间中指定所需的昵称。这是您发送给的JID的资源。
例如,要以'Joe'的身份加入会议室,请将您的在线状态发送至testroom@conference.localhost/Joe
,而不仅仅是testroom@conference.localhost
。
您的加入节也不应包含“来自”属性,这是added for you by the server。包括一个不会破坏任何东西,但它是没有意义的(无论如何,你的错误,它必须是一个完整的JID)。
因此,正确的节以'乔'的身份加入房间:
<presence to='testroom@conference.localhost/Joe' xmlns='jabber:client'>
<x xmlns='http://jabber.org/protocol/muc'/>
</presence>
有关详细信息,请参阅XEP-0045: Entering a room。