我是XMPP的新手.我在Android上使用smack在我的应用程序中提供聊天.
在smack 4.1中,添加了对流管理的支持,因此我使用了
XMPPTCPConnection.setUseStreamManagementDefault(true);
Run Code Online (Sandbox Code Playgroud)
启用此功能,我得到:
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'/>
Run Code Online (Sandbox Code Playgroud)
因此,XEP 198在我的客户端和服务器上工作正常(ejabberd 15).
但我的问题是 - >我是否必须编写自己的代码来存储消息(服务器未确认)到我的android sqlite数据库中,并chat.sendMessage();在连接重新连接时手动重新发送它们?或者这个重发部分是由Smack自己完成的吗?
我没有得到任何关于在smack 4.1上使用XEP 198的文档 XMPPTCPConnection.setUseStreamManagementDefault(true);
是否有任何方法可以从smack听取<a/>从服务器收到的?
我见过yaxim的源代码,但似乎他们已经编写了自己的代码(通过发送数据包)来支持XEP 198,现在在Smack 4.1中完成了.
请帮助我在启用此支持后应该怎么做?
我尝试通过这段代码启用流管理(XEP-0198)
XMPPTCPConnectionConfiguration connConfig = XMPPTCPConnectionConfiguration.builder().setHost(HOST)
.setPort(PORT).setDebuggerEnabled(true).setSecurityMode(SecurityMode.disabled)
.setUsernameAndPassword(USERNAME, PASSWORD).setServiceName(SERVICE).build();
XMPPTCPConnectionconnection = new XMPPTCPConnection(connConfig);
connection.setPacketReplyTimeout(TIME_OUT);
connection.connect();
connection.login();
connection.setUseStreamManagement(true);
Run Code Online (Sandbox Code Playgroud)
但后来当我检查流管理时,它返回false.