我是 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 中完成。
请帮我看看启用此支持后我应该做什么?
最佳答案
- 当然,您需要存储待处理的消息并在连接恢复时重新发送它们。
- 我们有一种方法可以收听消息确认。看看这个,https://stackoverflow.com/a/37289804/4085494
关于android - 如何使用 smack 4.1 的 XEP 198(流管理)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287942/