第一种情况:
我在Ubuntu 16.04 LTS中使用PSI客户端,而我的ejabberd版本是16.03。
我正面临消息丢失的问题因此我已经通过此链接进行流管理:http://xmpp.org/extensions/xep-0198.html
当我发送以下请求时
<enable xmlns='urn:xmpp:sm:3' resume='true'/>
服务器响应对我来说没问题,即
<enabled xmlns="urn:xmpp:sm:3" id="g2gCbQAAAANELTVoA2IAAAW+YgAMmKxiAAnx/A==" max="300" resume="true"/>
与其他用户聊天后,当我发送以下Stream恢复请求时:
<resume xmlns='urn:xmpp:sm:3'
h='0'
previd='g2gCbQAAAANELTVoA2IAAAW+YgAMmKxiAAnx/A=='/>
我收到以下错误:
<failed xmlns="urn:xmpp:sm:3"><unexpected-request xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/></failed>
我尝试了所有方法,例如断开网络,终止应用程序和离线用户。但是流恢复不起作用。 我没有遇到问题,请帮助我。
第二种情况:
当我在ejabberd.yml中使用以下配置时:
listen:
port: 5222
module: ejabberd_c2s
resend_on_timeout: if_offline
stream_management: true
启用流管理后开始聊天。然后,对于网络断开和应用程序终止的情况,我的所有消息都存储在脱机队列中(如果我无法在300秒内重新连接)。在此过程中,不会丢失任何消息。
但我的问题是这个过程仅适用于移动设备(ejabberd_c2s模块)。 Web或Bosh不支持流管理(ejabberd_http模块)。我怎样才能为波什或网络使用流管理?