Назад | Перейти на главную страницу

хранить данные комнаты ejabberd muc в mysql

Я реализовал групповой чат, используя функцию mucSub, предоставленную ejabberd.

На данный момент сообщения, которые были отправлены в комнату muc, хранятся в базе данных mnesia, всякий раз, когда я перезапускаю историю сообщений сервера, теряется. Мне нужно, чтобы они хранились в mysql. Я хочу иметь возможность получать историю комнаты muc в любой момент, как и в приложении.

Это моя конфигурация mod_mam и mod_muc:

mod_mam:
   default: always
   db_type: sql
mod_muc:
 db_type: sql
 access:
   - allow
 access_admin:
   - allow: admin
 access_create: muc_create
 access_persistent: muc_create
 default_room_options:
   mam: true
   persistent: true

Кто-нибудь, пожалуйста, помогите мне выбраться из этого ... Спасибо

всякий раз, когда я перезапускаю сервер, история сообщений теряется

Да, история последних сообщений комнаты хранится в ОЗУ и теряется при остановке сервера. Это функция, предоставляемая mod_muc, как описано в XEP-0045. Как вы заметили, эта недавняя история теряется, поэтому в вашем случае лучше сосредоточиться на mod_mam, который реализует XEP-0313, а сообщения постоянно хранятся в базе данных.

На данный момент сообщения, отправленные в комнату слизистой, хранятся в базе данных mnesia.

С этой конфигурацией вы видите новые сообщения, отправленные в комнату, хранящиеся в таблице «archive_msg» Mnesia?

Я попробовал вашу конфигурацию с ejabberd 18.12, и сообщения правильно сохраняются в таблице MySQL «archive», а не в таблице «archive_msg» Mnesia.