2017-02-27 75 views
2

考慮我有2個用戶Alice和Bob在我的Jabber服務器上。若要預訂添加到名冊作爲both,我需要做下面的步驟:XMPP - 花名冊訂閱說明

  1. Alice發送訂閱請求給Bob。

  2. 當Bob收到請求時,他會批准它。

  3. 鮑勃也許會對愛麗絲的存在感興趣,所以他訂閱了她。

  4. 愛麗絲需要批准鮑勃的請求。

現在考慮,鮑勃沒有在服務器上,即他是未登記的和愛麗絲試圖將他加入到她的名冊。

以下是這將發生以下步驟:

  1. Alice發送訂閱請求給Bob。

  2. 鮑勃,未註冊,沒有收到請求。

  3. Alice-> Bob訂閱集爲None

  4. 過程結束於此。

現在,鮑勃得到了自己的註冊。 Alice如何知道Bob已經註冊並且需要再次發送subscription請求 Bob會如何向每個將其添加到其名單中的用戶推送通知?其中XEP/Ejabberd模塊處理這?

我們調試了Whatsapp並瞭解到,在這種情況下,Bob會將通知推送給所有將其添加到其名單中的用戶。

+0

你能弄清楚如何在這裏繼續?我做了與上面相同的實驗,即使在Bob註冊後(並且Bob在他的聯繫人中沒有Alice),Alice對Bob的訂閱仍處於等待「退出」狀態。 –

+0

我真的不記得我們是如何實現它的。讓我回想一下我的想法,我會回到你身邊。 – PythonEnthusiast

回答

0

那麼,我看到它更像是,你使用哪種類型的配置,因爲在設置你的環境時,有幾種情況會影響因子。以下是我知道這些事情可能會發生的幾種方法。

  1. 有問題的服務器起着連接Xmpp客戶關鍵的作用,在一種情況,如互聯網DNS服務器上起到互連的客戶了突出的作用,因此,如果鮑勃不Alice發送時註冊一個請求,他可能有一個緩存服務,記錄所有的互連服務,當他註冊時,他有一個Xmpp服務,可以自動發現網絡上的同齡人(就像我說的這將是用戶特定的),但必須有發現過程中涉及的某種類型的用戶設置;他的服務會從緩存中提取所有過去的請求,並根據時間限制檢索Alice的請求,然後他可以回覆。這從哲學角度來看更多。但是如果你是一名開發人員,你可以爲上面描述的所有場景編寫插件。如果你需要一些更多的技術參數,我們可以討論一下,比如你想在Bobs服務器上寫的發現方法的類型,你可能想要放在Bob網絡上的緩存引擎類型,以及如何將它插入到Jabber服務器等,這只是我自己的兩分錢。考慮這種情況有點類似於擁有數據包收集器並在登錄時檢索離線消息,但在這種情況下,它將包含Jabber服務器,並且數據包收集器將作爲您插入服務器的緩存服務引擎。

  2. 如果它是一個局域網,它可能更難以像檢索主機記錄和所有互連問題那樣動態,但我可以想到的合理解決方案是搶佔所有可用的聯繫人,或者更好的是仍然使用特定的子網。