Я успешно развернул сервер ejabberd и интегрировал его с мобильным приложением.
Все работает отлично, однако каждый раз, когда я перезагружаю сервер, история каждой комнаты теряется. Фактически, он все еще хранится в базе данных, но клиент больше не может его получить.
Первоначально я думал, что это проблема клиента, но я испытал то же самое, используя известные клиенты, такие как Xabber и Pidgin.
Я несколько раз проверял руководство по настройке https://docs.ejabberd.im/admin/configuration/#mod-muc но я ничего не нашел.
С вами когда-нибудь случалось что-нибудь подобное? В чем может быть причина такого неожиданного поведения?
Вот как настроен moc_muc на сервере:
mod_muc:
host: "conf.example.com"
history_size: 1000
max_users: 1000000
max_user_conferences: 1000
default_room_options:
mam: true
max_users: 1000000
members_by_default: true
members_only: false
password_protected: false
persistent: true
public: true
moderated: false
anonymous: false
каждый раз, когда я перезапускаю сервер, история каждой комнаты теряется.
История недавних обсуждений комнаты хранится только в ОЗУ, поскольку не предполагается, что она будет храниться постоянно. Он настроен с опцией history_size, и нет смысла устанавливать высокое значение, поскольку это позволяет новому пользователю знать только последние комментарии в текущем обсуждении. Это не для ведения журнала, не для хранения, не для архивирования, а только для того, чтобы узнать, что такое текущий разговор. Видеть https://xmpp.org/extensions/xep-0045.html#enter-history
Фактически, он все еще хранится в базе данных, но клиент больше не может его получить.
То, что вы видите в базе данных, технически не является упомянутой ранее «историей обсуждения»; это архивирование обсуждений комнаты, которое вы включили с помощью мама вариант. Это постоянно хранит все сообщения комнаты в базе данных. Так что с ними можно будет проконсультироваться в любое время в будущем. Видеть https://docs.ejabberd.im/admin/configuration/#mod-mam