【问题标题】:How to create a muc private chat room with existing room name?如何使用现有房间名称创建一个 muc 私人聊天室?
【发布时间】:2017-07-30 12:14:54
【问题描述】:

我可以创建一个厕所。但是,如果我将房间名称作为数据库中现有的名称,服务器会拒绝它。那么是否可以在 ejabberd 服务器(MYSQl 后端)中创建两个具有相同名称的房间?

如果可能,那么后果是什么?例如,我创建了两个具有唯一名称的房间,例如“newGroupChat”和相同的用户列表(user1,user2)。 ejabberd 如何识别它?如果我在“newGroupChat”中发送消息,这些消息会出现在一个房间还是两个房间。

【问题讨论】:

    标签: ios mysql xmpp ejabberd


    【解决方案1】:

    很难明确没有你想要实现的目标,但我在另一个 XMPP 服务器设置中遇到了这个(它非常通用,不同服务器上的配置差异很少),我得到的想法是这样的:

    1. 如果您使用不同的系统(不同的 IP),则可能在多个域中拥有相同的房间,因此您可以镜像房间,但房间名称必须相同,例如“newGroupChat@conference .serverIP1" 和第二个系统 "newGroupChat@conference.serverIP2",当您在系统 1 上发送消息时,如果系统 2 用户在线并登录房间,他们也可以看到相同的消息。

    2. 如果是同一个系统,我不知道您打算如何为其设置边界,我想出两种方法可以做到这一点,使用不同的操作系统(可能是桥接网络)以及分离数据库。如果您使用嵌入式数据库,则无法重新创建同一个房间,您可以尝试为名称添加扩展名以查看它是否可以正常工作:“newGroupChat@conference.serverIP1/ID1”和“newGroupChat@conference .serverIP1/ID2",以上也适用于外部数据库如SQL。这些是一些建议,与我给出的示例相比,muc 设置可能有轻微的配置设置,但这是一个一般性的想法,如果你有更好的解释,你也可以与我分享,因为我正在研究 LAN 在不同系统上聊天同一个厕所。

    【讨论】:

      【解决方案2】:

      在 Xmpp 世界中,room@service 被用作房间的标识符,所以这里 room 是唯一的。这就是使用现有名称时无法创建使用的原因。

      我认为您可以尝试为此目的使用subject configure。

      Xmpp MUC Xep-0045

      房间,一个虚拟空间,用户可以形象地进入,以便与其他用户参与基于文本的实时会议。

      房间 ID,房间 JID 的本地部分,可能是不透明的,因此对人类用户没有意义(请参阅业务规则下的语法);与房间名称对比。

      Room JID,房间的地址。

      房间名称,房间的用户友好的自然语言名称,由房间所有者配置并在服务发现查询中显示;与房间 ID 对比。

      【讨论】:

        【解决方案3】:

        我可以创建一个厕所。但是,如果我将房间名称作为现有房间名称 在数据库中,服务器拒绝它。所以可以创建两个 ejabberd 服务器(MYSQl 后端)中同名的房间?

        不。不可能在 ejabberd 的主机中创建两个同名的房间(也按照 XEP-45)。

        【讨论】:

          猜你喜欢
          • 2011-11-18
          • 2011-08-03
          • 1970-01-01
          • 1970-01-01
          • 2018-03-10
          • 1970-01-01
          • 2014-06-06
          • 2015-02-28
          • 2013-09-24
          相关资源
          最近更新 更多