是否有可能只有不同资源的 JID 加入同一个多用户聊天室

Posted

技术标签:

【中文标题】是否有可能只有不同资源的 JID 加入同一个多用户聊天室【英文标题】:Is it possible JIDs with only different resources joining same multi-user chat room 【发布时间】:2012-04-02 13:46:42 【问题描述】:

在xmpp中,以下2个用户可以加入多用户聊天(MUC)还是订阅同一个pub-sub节点?

public@service.com/user1 public@service.com/user2

【问题讨论】:

相关:***.com/questions/12478871/… 【参考方案1】:

当加入匿名 MUC 房间时,其他人不知道房间中其他人的“真实”JID 的房间,连接用户提供自己的 JID。

当加入一个非匿名房间时,用户提供他们的完整 JID,然后将其传输给所有居住者。

在任何一种情况下,都没有什么可以阻止用户使用相同的裸 JID 但不同的资源加入。有关 MUC 协议的更多详细信息,特别是关于加入房间的信息,请参阅 XEP-0045: Basic MUC Protocol。

通过 pub-sub 订阅时,客户端可以在订阅时提供完整的 JID 或裸 JID(无资源)。详情请见the pub-sub XEP, XEP-0060

【讨论】:

谢谢大家!另外,如果您想对此发表评论:我实际上想为多个站点用户使用单个 jabber 用户,我认为这将减少 XMPP 服务器上的负载,因为我只需要登录一个 jabber 用户.. 站点用户将是使用不同的资源相互发送消息。你认为我接近它是对的吗?【参考方案2】:

在大多数 MUC 实现中,您必须为每个资源使用不同的 昵称 加入房间。如果您对第二个资源使用相同的昵称,您很可能会收到 conflict 错误。

【讨论】:

但这真的取决于服务器。例如,Prosody 允许您使用来自不同资源的相同昵称。 @Zash 还是这样吗?在对话中,我收到“尼克已在使用”错误。也许这是由于对话客户端检查所致? (加吉姆也一样)

以上是关于是否有可能只有不同资源的 JID 加入同一个多用户聊天室的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户 JID 是不是已在 XMPPFrameWork 中使用

有没有办法确定用户加入了哪些多用户会议 (MUCH)?

我如何知道指定的 JID 是不是已经连接到服务器?

一次获取多个 JID XMPP

XMPP 带内注册(XEP-0077):与简单的 jid/pw 登录不同,都有哪些步骤?

如何区分用户的 JID 和 MUC 的 JID?