Делаю на работе комнаты на ejabberd. В общем-то, сам сервис я настроил и сконфигурировал так, как и надо было, но есть одна проблема. Требуется обеспечить доступность всей истории комнаты для каждого участника, нового или же переподключившегося. Этот XMPP-сервер использует максимум 10 человек, из которых большинство в одной локальной сети с ним, так что от нагрузки он так просто не ляжет.
В /etc/ejabberd/ejabberd.yml
я просто увеличил лимит хранящихся в комнате сообщений до 50000, и это прекрасно работает. До тех пор, пока сервис не будет перезапущен или физически не будет перезагружен комп, на котором всё это и работает.
Я подключил и настроил mod_mam
(XEP-0313) так, чтобы он архивировал историю вновь созданных комнат в MySQL. Но проблема в том, что после перезагрузки сервера ни Pidgin, ни Psi+, ни Gajim, ни Swift, ни Spark не показывают в комнате ни одного из старых сообщений. Даже для тех пользователей, которые еще не участвовали в конференции.
Что же касается самого сервера, на вручную переданное из консоли XMPP
<iq id='purpled_id' type='get' to='room@conference.example.com'>
<query xmlns='urn:xmpp:mam:tmp' queryid='random_string'/>
</iq>
он, действительно, бодро вываливает всю историю комнаты от начала времен, не взирая на прошлые перезагрузки и прочие неприятности. Проблема в том, что это видно только в консоли, а как сделать, чтобы он отдавал историю в клиент?
Точнее, как сделать, чтобы клиент эту историю запросил? И какой клиент использовать? Или же плагин? Он должен быть доступен не только для GNU/Linux, но и для Windows, и естественно, это не обязан быть один и тот же клиент.
Прошу подсказать, потому что я, похоже, в тупике.
Большое спасибо за внимание.
Александр