android - 如何使用 smack 4.1 的 XEP 198(流管理)?

标签 android xmpp ejabberd smack stream-management

我是 XMPP 的新手。我在 android 上使用 smack 在我的应用程序中提供聊天功能。

在 smack 4.1 中,添加了对流管理的支持,所以我使用了

  XMPPTCPConnection.setUseStreamManagementDefault(true);

启用它,我得到:

03-27 00:50:54.945: D/SMACK(16991): SENT (5): <enable xmlns='urn:xmpp:sm:3' resume='true'/>
03-27 00:50:55.740: D/SMACK(16991): RECV (5): <enabled xmlns='urn:xmpp:sm:3' id='g2gCbQAAAAVTbWFja2gDYgAABZNiAAYRuGIAAW06' resume='true' max='300'/>

因此,XEP 198 在我的客户端和服务器 (ejabberd 15) 上都运行良好。

但我的问题是 -> 我是否必须编写自己的代码来将消息(服务器未确认)存储到我的 android sqlite 数据库中并使用 chat.sendMessage(); 手动重新发送它们什么时候重新连接?或者这个重发部分是由 Smack 自己完成的吗?

除了 XMPPTCPConnection.setUseStreamManagementDefault(true); 之外,我没有得到任何关于在 smack 4.1 上使用 XEP 198 的文档。

smack 有什么方法可以用来监听 <a/> 吗?从服务器收到?

我看过yaxim的源代码, 但他们似乎已经编写了自己的代码(通过发送数据包)来支持 XEP 198,现在在 Smack 4.1 中完成。

请帮我看看启用此支持后我应该做什么?

最佳答案

  1. 当然,您需要存储待处理的消息并在连接恢复时重新发送它们。
  2. 我们有一种方法可以收听消息确认。看看这个,https://stackoverflow.com/a/37289804/4085494

关于android - 如何使用 smack 4.1 的 XEP 198(流管理)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287942/

相关文章:

java - 如何将字符串集保存到共享首选项

Android在xml中禁用单选组

android - 适用于 Android 的 XMPP/Jingle 语音库

android - Quickblox 一对一聊天连接丢失

c# - 为什么在使用 XMPP 时,多次聊天发送时会收到 'service unavailable'?

xmpp - Vines for XMPP Server 而不是其他解决方案

c# - Unity中如何去掉粒子系统显示的图标

android - 如何避免缩放android webview

ios - 如何在 Ejabberd 中存档消息并存储在 MongoDB 中

push-notification - 如何配置或连接 ejabberd 18 xmpp 服务器到 App 服务器以进行推送通知 (XEP-0060 XEP-0357)?