我已经成功部署了 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
房间最近的讨论历史仅保存在 RAM 中,因为它不会被永久存储。它配置了选项history_size,设置高值没有意义,因为它只允许新占用者知道当前讨论中的最新评论。它不是为了记录,不是为了存储,不是为了归档,它只是为了知道当前的对话是什么。见https://xmpp.org/extensions/xep-0045.html#enter-history
从技术上讲,您看到的存储在数据库中的并不是之前提到的房间“讨论历史”;那是房间讨论存档,您使用mam选项启用。它将所有房间消息持久地存储在数据库中。因此,他们可以在未来的任何时间进行咨询。见 https://docs.ejabberd.im/admin/configuration/#mod-mam