2010-11-23 100 views
5

當用戶加入ejabberd MUC時,服務器將向用戶發送完整的房間名單和聊天記錄。如何從ejabberd的muc重新請求房間名單和歷史記錄

在我的基於Web的客戶端,我需要堅持在頁面重新加載的空間。我的問題是,當頁面被卸載時,我放棄了最初的信息。

自動櫃員機我正在通過將名冊和客房歷史序列化爲json並將其存儲在cookie中來解決此問題。但是,這是一個非常糟糕的主意(tm),因爲我可以很快超過擁有大量用戶的客房的4k一般cookie限制。

所以問題:如何重新請求服務器發送用戶加入的信息,而不實際重新加入MUC?

花名冊的一種方法是發送帶有名稱空間「http://jabber.org/protocol/disco#items」的查詢iq,但這是不完整的,因爲它不提供存在信息或任何擴展信息(例如非匿名房間的真正jid)

回答

0

嘗試在頁面卸載時離開muc空間並在頁面重新加載時重新發送狀態到muc。

+0

「沒有實際重新加入MUC」是您錯過的重要位。如果我在頁面重新加載時離開房間,則每個用戶都會收到通知,然後在用戶重新加入時再次通知。這有點挫敗了重新參加同一屆會議的重要性。 – 2010-12-09 17:29:26

1

在頁面卸載你需要發送「存在不可用」

在頁面加載(歸隊室)發送「存在可用」加「歷史」的要求。例如,

<history maxstanzas=20 /> 

Reference to XEP-0045 scheme

1

嗯。我沒有名冊的解決方案,但在歷史上,你有沒有嘗試過?

<iq to="[email protected]" type="get"> 
    <history xmlns="http://www.jabber.com/protocol/muc#history" start="1970-01-01T00:00:00Z" direction="forward" count="100" /> 
</iq> 
相關問題