【问题标题】:Try to rejoin a client to a specific room after reconnect重新连接后尝试将客户端重新加入特定房间
【发布时间】:2019-11-18 09:58:27
【问题描述】:

我成功创建了 muc 服务并创建了一个房间。 创建房间“testroom@conference.xmpp.messenger.local”后,我和我的客户“client@xmpp.messenger.local”进入房间。 (我的客户也是 muc room 的主人) 在这种情况下,它可以工作,我可以向 muc room 发送任何消息。

如果我重新加载页面并重新连接到我的 ejabberd 服务器,我的问题就出现了。 重新连接后,我读取客户端的所有房间并尝试使用以下存在节加入房间(在 XEP-0045 // 16.7.1 中描述):

<presence to='testroom@conference.xmpp.messenger.local'>
  <x xmlns='http://jabber.org/protocol/muc'/>
</presence>

现在我收到错误代码 409,其中包含以下错误消息: "这个昵称是别人注册的"

我不明白为什么它说我用另一个人注册了这个昵称 -> 这是同一个人

顺便说一句,我也尝试重新输入:

<presence
    from='client@xmpp.messenger.local'
    id='n13mt3l'
    to='testroom@conference.xmpp.messenger.local'>
  <x xmlns='http://jabber.org/protocol/muc'/>
</presence>

至少我尝试使用不同的昵称进入房间,但这会导致立即断开连接而没有任何错误消息。

我希望其他人能找出问题并帮助我找到解决方案。

【问题讨论】:

  • 您应该提及您使用的 ejabberd 版本。此外,这种行为看起来很奇怪,因此它可能是您未提及的 mod_muc 中的一些自定义配置。最后,当您使用自定义客户端时,该客户端可能不希望出现这种情况,因此您应该尝试使用知名客户端(如 Gajim 或 Psi),并将其发送的 XMPP 节与您的客户端进行比较。跨度>
  • 感谢您的回复我正在使用 ejabberd 版本 18.12 和以下 xmpp bosh 客户端:github.com/kdcro101/xmpp-bosh-client 您是指我创建房间时的配置还是在我的配置文件中?

标签: xmpp ejabberd multiuserchat


【解决方案1】:

我解决了我的问题。 在将任何客户端连接到 ejabberd 服务器时,我必须选择一个资源。

我认为这不是必需的,但现在可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多