![保持线程在多个设备之间同步(ejabberd/conversations)](https://linux22.com/image/774701/%E4%BF%9D%E6%8C%81%E7%BA%BF%E7%A8%8B%E5%9C%A8%E5%A4%9A%E4%B8%AA%E8%AE%BE%E5%A4%87%E4%B9%8B%E9%97%B4%E5%90%8C%E6%AD%A5%EF%BC%88ejabberd%2Fconversations%EF%BC%89.png)
我想使用两个具有相同 jabber ID 的不同客户端设备,并且我希望消息线程对它们两个都显示相同,即使其中一个客户端离线一段时间。两个客户端都运行 Conversations,服务器是 ejabberd 21.12。
mod_carboncopy(XEP-0208)和 mod_mam 均在 ejabberd.yml 中激活。
mod_mam 的激活方式如下:
mod_mam:
db_type: sql
access_preferences: none
assume_mam_usage: true
default: never
观察到的行为是:
- 如果两个客户端都在线,则发送到该帐户的消息会同时发送给这两个客户端。
- 如果只有一个客户端在线,则消息会发送到在线客户端的帐户。第二个客户端上线时不会收到这些消息。
- 从任一客户端发送的消息都会出现在两个客户端的线程中(我相信这是 mod_carboncopy 的操作)。
期望的行为:
- 发送到帐户的消息会发送给两个客户端。如果其中一个客户端在线,则会收到消息。第二个客户端稍后上线时会收到消息。
答案1
回答我自己:在 ejabberd.yml 中的 mod_mam 下将“default: never”更改为“default: always”。
我仍想找到一种方法来控制消息存档的保存时间。