2016-08-03 349 views
0

我最近一直在玩ejabberd中的新MUC-Sub模塊 - 用例是我需要在我的移動應用程序中擁有類似WhatsApp的永久房間。在我進一步深入使用MUC/Sub之前,請問一位ejabberd專家對以下概念有何看法?我可能缺乏對ejabberd的全面瞭解,因此是基本問題。或者請讓我知道請一個好地方開始瞭解下面更好的...我已經詳細研究這兩個鏈接(https://blog.process-one.net/xmpp-mobile-groupchat-introducing-muc-subscription/https://docs.ejabberd.im/developer/proposed-extensions/muc-sub/)。謝謝!從本質上講,如果我們需要一個MUC房間來停止在所有用戶下線時被破壞,我們是否可以不簡單地禁用該功能 - 以便即使參與者離開或房間爲空時,服務也能繼續運行。該服務仍然可以繼續指向加入房間的原始參與者,並且如果在房間中發送了消息,則消息將在每個參與者的流上排隊。如果參與者離線,則該消息將進入他/她的離線消息列表(而不是MUC-Sub當前使用的存檔/ MAM)。爲什麼我們需要依賴Pub-Sub和MAM模型,如果這個問題可以通過簡單地保留參與者在房間中的參考(即使在他/她下線之後)並且然後利用mod_offline模塊(其應該發生自動)。ejabberd MUC和MUC/Sub澄清

這裏肯定有一個根本的原因是我可以俯瞰,但如果有人能夠拋出一些光請欣賞!

回答

0

正如博客文章解釋,這不是關於保持聊天室存活的問題。用戶無法在離線時或重新連接時收到推送信息(如果不再次加入),這是因爲MUC基於在線狀態。沒有出現在房間中的用戶不是房間的佔有者,也不應該接收任何東西。

我建議你再仔細閱讀XEP-0045 MUCMUC Sub blog post。 MUC Sub解決的問題應該更加明顯。

如果你這樣做,你會發現,XEP-0045定義持久MUC的想法:

持續客房 未被如果最後乘員退出摧毀一個房間;反義詞:臨時室。

ejabberd中的默認值是在用戶加入時創建臨時房間,但可以更改房間的設置以使其變爲持久性。在那種情況下,當最後一個乘客離開時它不會被破壞。您需要更改房間配置選項(與您在該房間啓用MUC Sub相同的表單)。

您通常希望將此選項與MUC Sub啓用相結合,以便即使沒有用戶存在,MUC房間也會保持在周圍。

+0

感謝@Mickael - 感謝您在此處和GitHub上的回覆。我會進一步深入研究這些問題,但是我對GitHub問題的觀點略有不同 - 即使我將房間設置爲持久房間並允許MUC訂閱,如果用戶重新加入房間,他/她的狀態仍然顯示爲無,而不是參與者/主持人。 – vikram17000

+0

Hi @MickaëlRémond,我讀了MUC sub和草稿的博客文章。這是否與MUC Sub一樣,它的整個想法是,用戶加入房間,他們訂閱它? (假設房間持久)?在博客文章中提到,一旦用戶上線後重新加入會議室非常網絡化。我是否正確理解它不再有必要?提前致謝,並抱歉劫持此線程:) –

+0

另一個問題,哪個草案最新的ejabberd實現http://xmpp.org/extensions/xep-0369.html或您自己的https://docs.ejabberd。im/developer/proposed-extensions/muc-sub /?我注意到他們有不同的節。 –