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

Posted

技术标签:

【中文标题】XMPP 客户端无法接收离线消息【英文标题】:XMPP client can not receive offline message 【发布时间】:2017-01-19 06:16:21 【问题描述】:

客户端收不到离线消息,ejabberd服务器抛出异常。日志消息为:

[error] <0.677.0>@ejabberd_hooks:run_fold1:368 function_clause,[xmpp_codec,get_ns,[xmlel,<<"message">>,[<<"xmlns">>,<<"jabber:client">>,<<"to">>,<<"bingo@im.com">>,<<"from">>,<<"bingo4@im.com/2685976459613694105436">>,<<"type">>,<<"chat">>],[xmlel,<<"delay">>,[<<"xmlns">>,<<"urn:xmpp:delay">>,<<"from">>,<<"im.com">>,<<"stamp">>,<<"2017-01-18T18:28:45.851121Z">>],[xmlcdata,<<"Offline Storage">>],xmlel,<<"body">>,[],[xmlcdata,<<"2222222222">>]]],[file,"src/xmpp_codec.erl",line,6151],xmpp,get_subtag,2,[file,"src/xmpp.erl",line,405],mod_offline,find_x_expire,2,[file,"src/mod_offline.erl",line,537],mod_offline,'-pop_offline_messages/3-fun-1-',2,[file,"src/mod_offline.erl",line,586],lists,'-filter/2-lc$^0/1-0-',2,[file,"lists.erl",line,1286],mod_offline,pop_offline_messages,3,[file,"src/mod_offline.erl",line,582],ejabberd_hooks,safe_apply,3,[file,"src/ejabberd_hooks.erl",line,382],ejabberd_hooks,run_fold1,4,[file,"src/ejabberd_hooks.erl",line,365]]
running hook: resend_offline_messages_hook,[<<"bingo">>,<<"im.com">>]

我的配置:

max_user_offline_messages:
    - 5000: poweruser
    - 2000: admin
    - 100


mod_offline:
    db_type: sql
    access_max_user_messages: max_user_offline_messages
    store_empty_body: true

配置错误或错误? ejabberd 16.12 版

【问题讨论】:

【参考方案1】:

这是最近修复的 ejabberd 的错误,将包含在 17.01 中

【讨论】:

以上是关于XMPP 客户端无法接收离线消息的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中使用 XMPP 接收离线消息

XMPP 框架:无法接收我的消息

HipChat Nodejs Bot - 无法接收房间消息

我们如何确定 XMPP 消息何时传递?

有没有办法实现 XMPP 客户端或接收到的消息,可以接收来自 XMPP 服务器的所有消息?

当两个 Jabber (XMPP) 客户端连接时,只有一个能够接收消息,两个都可以发送