ejabberd中的流恢复无效

时间:2016-08-10 11:15:42

标签: android ios xmpp ejabberd

第一种情况:

我在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模块)。我怎样才能为波什或网络使用流管理?

0 个答案:

没有答案