2016-12-09 41 views
0

我使用Prosody運行XMPP服務器。某些用戶如果與兩個客戶端(例如對話和Gajim)連接並加入多用戶聊天,則會出現兩次。這非常令人煩惱,例如,取決於您提及通知的用戶名只會出現在他們的桌面設備或移動設備上。如果多用戶聊天連接多個設備,則具有相同JID的用戶將出現兩次

我無法重現此行爲。即使我加入了與兩臺設備的聊天工作,我也只能作爲一個人出現。我認爲這是正確的行爲。有什麼我可以做的,以防止人們多次出現?

+0

我不確定你在問什麼;你的意思是他們加入了兩個不同的暱稱,你希望服務器將它們合併成聊天名單中的單個條目,或者這個人顯示了兩次,即使它們看起來有相同的暱稱(它只是列出兩次)? –

+0

其實目前我有兩種情況,一個用戶出現兩次,使用完全相同的暱稱,一個出現兩次,其中暱稱有不同的外殼(「用戶」和「用戶」)。所有其他只出現一次,無論連接多少設備。我認爲這是正確的行爲,並期望每個用戶只出現一次。我想知道爲什麼會發生這種情況,如果我能對此做任何事情。我已經嘗試將muc從匿名變爲非匿名,但它沒有什麼區別。 –

回答

1

Prosody中的'多會話暱稱'功能的工作原理是,如果使用相同XMPP帳戶(純JID)的多個設備(XMPP資源)試圖在房間中使用相同的暱稱,則會發生合併(即尼克由多個帳戶會話支持)。我是Prosody作者之一,也是這個功能的作者。

您所描述的問題是因爲這些用戶的多個設備不使用相同的暱稱(如Sam Whited的評論所暗示的),或者他們正在使用單獨的XMPP帳戶。暱稱在房間裏總是獨一無二的,同一個暱稱在定義上不會出現兩次。

暱稱區分大小寫(「用戶」與「用戶」不同),並且具有相同暱稱出現兩次的用戶可能仍然存在一些小差異(例如,他們可能在結尾添加了空格暱稱,或者他們可能使用的unicode字符看起來非常相似,但是不同)。

最簡單的解決方案是要求這些用戶將他們的暱稱更改爲相同。另一種解決方案是編寫一個Prosody插件來執行一個暱稱策略(假設你是服務器管理員)。

+0

是否有可能以某種方式禁用「多會話暱稱」功能? –

相關問題