簡體   English   中英

ejabberd 如何處理消息排序和傳遞?

[英]How does ejabberd handle message ordering and delivery?

根據https://datatracker.ietf.org/doc/rfc6120/?include_text=110.1。 有序處理如何確保名冊中所有項目的有序消息傳遞?

  1. 它是在服務器端還是客戶端完成的? 如果它在任何一側,是否在超時的舊消息上等待新消息?
  2. 它是否使用增量序列號來保證訂購?
  3. 在客戶端重新連接時,客戶端如何知道從服務器中提取什么? 客戶端是否發送名冊中所有項目的最后一個 msgId? 或者服務器是否為每個設備保留 QOS 數據和客戶端 state?

首先,由於 XMPP 使用 TCP 傳輸協議,它確保服務器以與客戶端發送數據相同的順序接收數據。

根據 TCP 文檔:

TCP 保證數據的傳遞,也保證數據包將按照發送時的相同順序傳遞

ejabbred 是一個 XMPP 服務器,通過 TCP 接收到的原始數據必須符合 XMPP 協議,並且與經過驗證的 XMPP 服務器相同。

在XMPP協議客戶端完成session發起、資源綁定、認證等操作后,就可以發送消息了。

這些消息按照客戶端發送消息和路由到其接收者的順序進行處理。 如果收件人離線,它會將相同的訂單推送並彈出到數據庫以供以后交付。

這里的訂購保證主要由 TCP 網絡堆棧來保證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM