Как повторно запросить список номеров и историю от muc в ejabberd - PullRequest
5 голосов
/ 23 ноября 2010

Когда пользователь присоединяется к MUC ejabberd, сервер отправляет пользователю полный список комнат и историю чата.

В моем веб-клиенте мне нужно сохранить номер при перезагрузке страницы. Моя проблема в том, что я теряю всю исходную информацию, когда страница выгружается.

Банкомат Я работаю над этим, сериализируя список и историю комнаты в json и сохраняя ее в файле cookie. Тем не менее, это действительно плохая идея (tm), поскольку я могу очень быстро превысить общий лимит печенья 4k для комнат с большим количеством пользователей.

Итак, вопрос: Как я могу повторно запросить информацию, которую сервер отправляет пользователю при присоединении, без фактического присоединения к MUC?

Один из подходов для реестров состоит в том, чтобы отправить запрос iq с пространством имен "http://jabber.org/protocol/disco#items", но это неполно, поскольку он не предоставляет информацию о присутствии или любую расширенную информацию (например, реальные jids для неанонимных комнат)

Ответы [ 3 ]

1 голос
/ 01 марта 2011

При выгрузке страницы необходимо отправить сообщение «Присутствие недоступно»

При загрузке страницы (вернуться в комнату) отправить запрос «Присутствие доступно» плюс «История».Например,

<history maxstanzas=20 />

Ссылка на схему XEP-0045

1 голос
/ 18 мая 2011

Хм.У меня нет решения для Ростера, но на историческом, вы пробовали это?

<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>
0 голосов
/ 07 декабря 2010

Попробуйте выйти из комнаты слияния, когда страница выгружена, и повторно отправить информацию о присутствии на серу, когда страница перезагрузится.

...