因此,为了知道是否仍有活动的数据连接,我每隔5分钟发送一次ping,并等待服务器响应。所以基本上,我使用iq id作为这个using方法的密钥。我将发送一个ping,并存储iq id,我将说假设noDataConnection = true。现在,如果我收到具有相同iq id的pong,我假设连接是活动的,所以我将设置noDataConnection = false。但是,如果没有数据连接,我将继续发送设置为noDataConnection = true的pings,并且永远不会收到任何pings,因此它将保持为true,除非它恢复并获得数据连接。
摘自http://xmpp.org/extensions/xep-0199.html#s2c:PING:
<iq from='juliet@capulet.lit/balcony' to='capulet.lit' id='c2s1' type='get'>
<ping xmlns='urn:xmpp:ping'/>
</iq>PONG:
<iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='c2s1' type='result'/>我唯一关心的是,如果我收到的iq不是ping的结果,我的应用程序将假设noDataConnection = true,因为它收到的iq id与我发送的ping iq id不匹配。有没有办法知道我收到的iq是否是我ping的结果?
谢谢。
发布于 2013-01-17 17:58:12
我的解决方案是在我发送的iq id前面加上一个文本" ping ",所以基本上如果我收到一个带有“ping”的iq前缀,那么它就是我的ping的pong。
https://stackoverflow.com/questions/13440315
复制相似问题