0
是否可以在ejabberd服務器發送的消息中添加服務器時間戳?這將有助於同步服務器和客戶端的時鐘時間。我在嘗試在MUC聊天中檢索郵件歷史記錄時遇到困難。XMPP MUC中的重複消息處理
場景:
讓說,服務器時間是T100和客戶端的時鐘服務器時間落後10秒(讓我們把這個時間T90)。
在T100,服務器向客戶端發送消息M1。客戶在T90時間(當地客戶)收到此消息。
接下來,客戶端脫機並嘗試重新加入組。在時間T90之後客戶端請求所有消息(因爲在T90處客戶端接收到最後接收到的消息M1)。
服務器再次將M1發送回客戶端,因爲M1的時間戳爲T100。
謝謝,
我不確定MAM id如何幫助這裏。 可以說客戶已經加入了一個房間並詢問了房間的歷史記錄,並且服務器向客戶端發送了帶有MAM id'M1'的單個消息。接下來,客戶端從房間接收100條活動消息。 客戶端現在斷開連接並嘗試再次加入房間,詢問MAM id爲'M1'後的所有消息。客戶將從房間歷史記錄中收到至少100條消息,其中前100條將是重複的。 幾個問題。 Stanza Ids&MAM Ids是否一樣? 添加一個爲所有聊天消息添加時間戳的掛鉤可以嗎? –
這個id是不同的,但如果您使用MAM來檢索郵件,那麼不會收到歷史郵件,您可以在加入時詢問零歷史郵件。 –
那麼我一定會看看。目前我已經設法編寫一個鉤子,爲所有羣組消息添加時間戳:) –