如何从smack 4.1使用XEP 198(流管理)?

时间:2015-03-26 20:12:33

标签: 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)。

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

除了XMPPTCPConnection.setUseStreamManagementDefault(true);

之外,我没有获得在smack 4.1上使用XEP 198的任何文档

smack是否有任何方法可以侦听从服务器收到的<a/>

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

启用此支持后,请帮我解决一下该怎么办?

1 个答案:

答案 0 :(得分:5)

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