如果多用户聊天连接多个设备,则具有相同JID的用户将出现两次

问题描述:

我使用Prosody运行XMPP服务器。某些用户如果与两个客户端(例如对话和Gajim)连接并加入多用户聊天,则会出现两次。这非常令人烦恼,例如,取决于您提及通知的用户名只会出现在他们的桌面设备或移动设备上。如果多用户聊天连接多个设备,则具有相同JID的用户将出现两次

我无法重现此行为。即使我加入了与两台设备的聊天工作,我也只能作为一个人出现。我认为这是正确的行为。有什么我可以做的,以防止人们多次出现?

+0

我不确定你在问什么;你的意思是他们加入了两个不同的昵称,你希望服务器将它们合并成聊天名单中的单个条目,或者这个人显示了两次,即使它们看起来有相同的昵称(它只是列出两次)? –

+0

其实目前我有两种情况,一个用户出现两次,使用完全相同的昵称,一个出现两次,其中昵称有不同的外壳(“用户”和“用户”)。所有其他只出现一次,无论连接多少设备。我认为这是正确的行为,并期望每个用户只出现一次。我想知道为什么会发生这种情况,如果我能对此做任何事情。我已经尝试将muc从匿名变为非匿名,但它没有什么区别。 –

Prosody中的'多会话昵称'功能的工作原理是,如果使用相同XMPP帐户(纯JID)的多个设备(XMPP资源)试图在房间中使用相同的昵称,则会发生合并(即尼克由多个帐户会话支持)。我是Prosody作者之一,也是这个功能的作者。

您所描述的问题是因为这些用户的多个设备不使用相同的昵称(如Sam Whited的评论所暗示的),或者他们正在使用单独的XMPP帐户。昵称在房间里总是独一无二的,同一个昵称在定义上不会出现两次。

昵称区分大小写(“用户”与“用户”不同),并且具有相同昵称出现两次的用户可能仍然存在一些小差异(例如,他们可能在结尾添加了空格昵称,或者他们可能使用的unicode字符看起来非常相似,但是不同)。

最简单的解决方案是要求这些用户将他们的昵称更改为相同。另一种解决方案是编写一个Prosody插件来执行一个昵称策略(假设你是服务器管理员)。

+0

是否有可能以某种方式禁用“多会话昵称”功能? –