2014-10-03 36 views
2

我很新的XMPP和最近決定爭取在移動平臺的IM。關於XMPP我有我似乎無法最近的讀數後找到答案(我想用ejabberd或Tigase作爲服務器的,所以下面的問題將被假設服務器端就是其中之一)幾個問題:XMPP名冊地位,未知用戶之間的自定義的名單和通訊

  1. 我讀過,在XMPP協議中,加入其他用戶進入名單是由客戶端發送名冊設置請求到服務器完成,那麼服務器將添加具有「從」的訂閱狀態名冊項目和「到」的請求客戶端和客戶端分別添加。在其他情況下,名單項目的訂購價值變爲「兩者」,被添加的用戶需要接受發送的請求。它是否正確?

  2. 在我的理解中,一個用戶通過XMPP中的JID識別並添加另一個用戶,如果我把它放入WhatsApp的情況下,它是用戶的電話號碼。它是否正確?

  3. 是否有可能使服務器定製客戶的名單?例如,服務器將使用IM處理所有客戶端,並根據某些邏輯返回一個名單,例如,他們可能彼此認識的人,而不是隻有用戶添加的聯繫人?爲了更清楚地闡明這一點,它就像你可能認識的Facebook人。因此,在這種情況下,每次客戶端登錄並請求名單時,服務器都會返回用戶可能會發現想要與之通話的人員列表。

  4. 根據以前的理解,用戶A是否有可能看到另一個用戶B是否在線,因爲A發送了添加B的請求,但是B尚未接受?在B接受請求之前如何向B發送任何消息?

感謝您的幫助!

回答

4

我讀過,在XMPP協議中,加入其他用戶進入名單是由客戶端發送名冊設置請求到服務器完成,那麼服務器將添加一個名冊項目以「從」和「申購狀態到'分別添加到請求客戶端和客戶端。在其他情況下,名單項目的訂購價值變爲「兩者」,被添加的用戶需要接受發送的請求。它是否正確?

有兩位。一個是增加名冊,另一個是獲得訂閱。通過發送狀態訂閱請求來建立狀態訂閱(並且這樣做,聯繫人將被自動添加到名冊中)。另一方面,花名冊可以操縱你的花名冊,但不會導致簽名。

在我的理解中,一個用戶通過XMPP中的JID識別並添加另一個用戶,如果我把它放入WhatsApp的情況,它是用戶的電話號碼。它是否正確?

對於XMPP的情況,是的,使用JID進行尋址。我不知道Whatsapp的編址如何工作。

是否有可能使服務器定製客戶的名單?例如,服務器將使用IM處理所有客戶端,並根據某些邏輯返回一個名單,例如,他們可能彼此認識的人,而不是隻有用戶添加的聯繫人?爲了更清楚地闡明這一點,它就像你可能認識的Facebook人。因此,在這種情況下,每次客戶端登錄並請求名單時,服務器都會返回用戶可能會發現想要與之通話的人員列表。

在封閉的環境中,服務器定製可能是可能的。它不適用於公共網絡,因爲在線訂閱是雙向的,您最終會得到一個在線時無法看到的人員名單。另一方面,您可以輕鬆設置一個用戶搜索服務來返回建議,客戶可以隨意添加它們。

從以前的理解,有可能用戶A可以看到另一個用戶B是否在線,因爲A發送了添加B的請求,但是B還沒有接受?在B接受請求之前如何向B發送任何消息?

一旦B接受了A的在線訂閱,A只能看到B是否在線。在標準的XMPP中,你不需要狀態訂閱來發送消息(儘管有些部署可能會改變這一點,例如Google的做法)。

對於這些類型的問題,我建議您閱讀XMPP The Definitive Guide (O'Reilly)(免責聲明,我是其中一位作者)或相關RFC(6120,6121,6122)和XEP系列(自然,I認爲這本書更容易獲得)。

+0

感謝您的回答,它幫助我瞭解了很多! – alanlo 2014-10-07 07:00:52

+0

不客氣。 – Kev 2014-10-08 07:56:30

+0

我已經在iOS中創建了一個應用程序,並從xmpp連接並提取了用戶,並且也能夠獲得離線消息。現在,我需要使用XEP-0313獲取特定用戶的對話,如何實現XEP-0313 – 2017-01-06 11:13:02