如何在Smack 4.1中使用XEP 198(流管理)?

7

我是一名新手,想了解XMPP。我在我的应用程序中使用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 中已经完成了。

请告诉我在启用此支持后应该做什么?


我知道关于流管理的文档缺失了。但是由于Smack是开源的,你可以尝试查看源代码来回答一些问题。 - Flow
1个回答

6

当我离线时,ejabbered通过FCM转发消息会在我重新上线ejabbered频道时重复发送,那么在我的情况下我该怎么办? - Vishal Patoliya ツ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接