2015-10-20 110 views
0

可能有客戶端在收到消息後與服務器斷開連接的情況。服務器不確定客戶端是否收到消息並重新發送消息。現在,客戶端如何識別此消息是新消息還是已經由它處理? XMPP是否將任何唯一標識符與每條消息關聯以消除重複?XMPP如何處理重複的消息?

回答

1

服務器默認情況下不會重新傳遞郵件,只是因爲如果客戶端收到它,服務器「不確定」。發送到客戶端==「已發送」。

但是爲了獲得更高的可靠性,可以使用XEP-0198擴展名。這避免了重複的消息,因爲當客戶端重新連接到服務器時,它會告訴服務器它收到了多少消息(節)。服務器將它與發送給客戶端的節數進行比較。如果客戶沒有收到全部,它只會重新發送客戶錯過的那些。

該機制避免了必須爲每個消息分配唯一的標識符。

+0

我從您分享的鏈接中瞭解到,唯一的ID與每個節相關聯,它用於刪除重複的節。我對麼? Doc: 「因爲未確認的節可能已被另一方接收,重新發送它們可能會導致重複;儘管在所有節點上使用XMPP'id'屬性,但無法阻止此協議中的此類結果節至少可以幫助預定的收件人清除重複的節。「 –