Converse.js 中用户多用户聊天的持久性

Persistence for user Multi-User Chat in Converse.js

我想从 ejabberd 检索所有聊天对话,即使在我注销、关闭浏览器并重新登录后也是如此。请提出任何方法来做到这一点。我正在使用 converse.js。我应该在相反的配置中添加一些东西来检索聊天对话吗?

基本上,我想要 Facebook 那种聊天方式,我们可以在登录后检索每个用户之间的聊天对话。

这是我的 converse.js 配置:

converse.initialize({
                        websocket_url: webSocketUrl, // ConnectionUrl
                        keepalive: true,
                        message_carbons: true,
                        play_sounds: true,
                        auto_login: true,
                        jid: user,
                        password: password,                        
                        show_controlbox_by_default: false,
                        auto_list_rooms:true,
                        allow_logout: false,
                        allow_registration: false,
                    });

Converse.js 支持 XMPP 扩展 XEP-0313 Message Archive Management (MAM).

您需要确保您的 XMPP 服务器支持 MAM。 Ejabberd 15.06 支持。您需要在 Ejabberd 的配置文件中打开它。

在converse.js中,调用converse.initialize.[=20=时,你想把rosteralways的值传给message_archiving ]

例如:

converse.initialize({
                   // Your other options go here...
                   message_archiving: 'always'
                });

roster 意味着只有您名册中的联系人之间的消息才会被存档。 always当然意味着消息总是被归档。

还有相关选项archived_messages_page_size,您可以使用它来设置一次获取多少条消息。