ejabberd 不将未确认的消息存储到离线存储

Posted

技术标签:

【中文标题】ejabberd 不将未确认的消息存储到离线存储【英文标题】:ejabberd not storing unacknowledged messages to offline storage 【发布时间】:2015-09-26 14:03:44 【问题描述】:

我在 Ubuntu Server 14.04 上运行 Ejabberd 15.07.33。我使用的是基本配置,刚刚添加了mod_offline_post(来自mod_interact)。我已经阅读了有关死连接问题以及如何克服它的文章,但是 ejabberd 网站 (https://www.ejabberd.im/faq/tcp) 上的这篇文章说,未确认的消息应该最终存储在离线存储中,而我的情况并非如此。我应该设置什么特殊配置来让这种情况发生吗?我尝试设置 `resend_on_timeout 但没有改变任何东西。

感谢您的帮助。

【问题讨论】:

您是如何克服死连接问题的?谢谢! @ChrisR。我很久以前就放弃了 ejabberd 并建立了自己的消息服务器,JSON over websockets。我使用 play framework 作为 websockets 服务器。 【参考方案1】:

抱歉,我发现我也应该从客户端启用 Stream Management XEP-0198。我正在使用 Smack 4.1,并通过将这些行添加到我的代码中来启用它。

static 
XMPPTCPConnection.setUseStreamManagementDefault(true);
XMPPTCPConnection.setUseStreamManagementResumptiodDefault(true);

【讨论】:

您应该将自己的答案标记为已批准。它将帮助其他用户:)

以上是关于ejabberd 不将未确认的消息存储到离线存储的主要内容,如果未能解决你的问题,请参考以下文章

ejabberd 将客户端标记为离线所用的时间

具有流管理 (XEP-198) 的 Ejabberd 不使用离线消息挂钩

XMPP 客户端无法接收离线消息

前几条消息在传输到离线的 mqtt 客户端时丢失

当手机离线时,GCM 会存储消息列表或仅存储最后一条消息,就像 APNS 一样?

Xmpp获取离线消息