5

ユーザーが ejabberd MUC に参加すると、サーバーは完全なルーム名簿とチャット履歴をユーザーに送信します。

私の Web ベースのクライアントでは、ページをリロードしてもルームを維持する必要があります。私の問題は、ページがアンロードされるときに最初の情報がすべて失われることです。

ATM 名簿と部屋の履歴を json にシリアル化し、Cookie に保存することで、この問題を回避しています。ただし、これは非常に悪い考えです (tm)。多くのユーザーがいる部屋では、4k の一般的な Cookie 制限をすぐに超える可能性があります。

質問:実際に MUC に再参加することなく、参加時にサーバーがユーザーに送信する情報を再要求するにはどうすればよいですか?

名簿の 1 つのアプローチは、"http://jabber.org/protocol/disco#items" の名前空間でクエリ iq を送信することですが、プレゼンス情報や拡張情報 (実際の非匿名ルームの場合は jid)

4

3 に答える 3

1

ページのアンロード時に、「プレゼンスを利用できません」を送信する必要があります

ページの読み込み (ルームへの再参加) で、「プレゼンス利用可能」と「履歴」リクエストを送信します。例えば、

<history maxstanzas=20 />

XEP-0045 スキームへの参照

于 2011-03-01T11:36:53.130 に答える
1

うーん。名簿の解決策はありませんが、履歴については、これを試しましたか?

<iq to="room@conference.xmpp.org" type="get">
  <history xmlns="http://www.jabber.com/protocol/muc#history" start="1970-01-01T00:00:00Z" direction="forward" count="100" />
</iq>
于 2011-05-18T19:34:26.823 に答える
0

ページのアンロード時に muc ルームを離れ、ページの再ロード時にプレゼンスを muc に再送信してみてください。

于 2010-12-07T14:11:57.250 に答える