【发布时间】: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 有什么方法可以监听从服务器接收到的<a/> 吗?
我看过yaxim 的源代码,但似乎他们已经编写了自己的代码(通过发送数据包)来支持现在在 Smack 4.1 中完成的 XEP 198。
请帮我解决启用此支持后我应该做什么?
【问题讨论】:
-
我知道关于 Stream Management 的文档丢失了。但是由于 Smack 是开源的,如果查看源代码可以回答几个问题,您可以尝试一下。
标签: android xmpp ejabberd smack stream-management