我已经成功部署了 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
答案1
每次我重新启动服务器时,每个房间的历史记录都会丢失。
房间最近的讨论历史仅保存在 RAM 中,因为它不打算永久存储。它配置了选项历史大小,设置一个高值是没有意义的,因为它只允许新用户知道当前讨论中的最新评论。它不用于记录,不用于存储,不用于归档,它只是为了知道当前的对话是什么。参见https://xmpp.org/extensions/xep-0045.html#enter-history
实际上,它仍然存储在数据库中,但客户端无法再检索它。
从技术上讲,您看到的存储在数据库中的内容并不是之前提到的房间“讨论历史记录”;那是您通过以下方式启用的房间讨论存档:妈妈选项。该选项将所有房间消息持久存储在数据库中。因此,将来可以随时查阅。请参阅 https://docs.ejabberd.im/admin/configuration/#mod-mam