ejabberd 2 用户 MUC 与正常的一对一聊天

ejabberd 2 user MUC vs. normal 1-to-1 chat

我使用 ejabberd 已经有一段时间了,但由于最近的一些问题和要求,我对一些事情感到好奇。

如果我创建一个有 2 个用户的 MUC 房间,它与普通的一对一聊天消息(性能方面)有什么不同吗?

如果我一直使用 MUC 进行所有一对一聊天会怎样?

它有任何性能开销或缺点吗?

我的连接是否会遭受性能损失,这通常会消耗更多资源或施加任何类型的限制或损失吗?

任何帮助或见解将不胜感激。

是的,MUC有一个开销,就是MUC进程管理本身。

不知道ejabberd是如何实现XMPP的,但是从协议的角度:

  1. "Normal" 一对一聊天是无状态的服务器端。所有上下文(消息历史记录等)都由客户端维护。服务器只是来回中继消息。另一方面,多用户聊天由服务器维护。资源(参与者列表、房间设置、消息历史记录)必须存储在某个地方,而这个责任在服务器上。

  2. 一对一的消息是"ad-hoc"。当一方想要聊天时,他们只需向收件人发送消息即可。另一方面,必须在开始对话之前创建、配置 MUC,并且必须在开始对话之前邀请另一方加入 MUC 房间。这增加了复杂性 and/or 时间。

  3. 多用户聊天提供了更多功能,但它们在一对一对话的上下文中是否有意义还有待商榷(例如,将某人踢出对话有意义吗?)。另一方面,您可能必须正确配置聊天室,以便它们不被发现(不能看到对话列表)、第三方不能加入(除非被邀请)、用户不能随意更改昵称等。