如何使用现有房间名称创建muc私人聊天室?

时间:2017-03-09 13:23:14

标签: ios mysql xmpp ejabberd

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

我认为您可以尝试使用subject配置。

{{3}}

  

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

     

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

     

房间JID,房间的地址。

     

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

答案 2 :(得分:0)

  

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

不可以在ejabberd的主机中创建两个具有相同名称的房间(根据XEP-45也是如此)。