【问题标题】:How to use XEP 198 (Stream Management) from smack 4.1?如何使用 smack 4.1 中的 XEP 198(流管理)?
【发布时间】:2015-05-31 00:41:52
【问题描述】:

我是 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 有什么方法可以监听从服务器接收到的&lt;a/&gt; 吗?

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

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

【问题讨论】:

  • 我知道关于 Stream Management 的文档丢失了。但是由于 Smack 是开源的,如果查看源代码可以回答几个问题,您可以尝试一下。

标签: android xmpp ejabberd smack stream-management


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

【讨论】:

  • 当我离线时,当我在 ejabbered 频道上线时,通过 FCM 的 ejabbered 转发消息会重复,所以,我必须做什么?
猜你喜欢
  • 2015-04-06
  • 2023-03-06
  • 2015-09-28
  • 2014-11-12
  • 2015-10-22
  • 1970-01-01
  • 2015-01-13
  • 2013-06-26
  • 1970-01-01
相关资源
最近更新 更多