2

使用用户 '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 创建一个群聊室,而且效果很好,但是当我尝试加入那个聊天室时,我得到了同样的错误。

4

1 回答 1

7

您需要在房间中指定您想要的昵称。这是您发送到的 JID 的资源。

例如,要以“Joe”的身份加入房间,请将您的出席信息节发送到testroom@conference.localhost/Joe而不是仅testroom@conference.localhost.

您的加入节也不应该包含“来自”属性,这是由服务器为您添加的。包括一个不会破坏任何东西,但它毫无意义(无论如何你的错误,它必须是一个完整的 JID)。

因此,作为“乔”加入房间的正确节:

<presence to='testroom@conference.localhost/Joe' xmlns='jabber:client'>
   <x xmlns='http://jabber.org/protocol/muc'/>
</presence>

有关详细信息,请参阅XEP-0045:进入房间

于 2013-09-20T17:19:27.343 回答