2010-11-23 95 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>