因此,为了知道是否仍有活动的数据连接,我每隔 5 分钟发送一次 ping,并等待服务器响应。所以基本上,我使用 iq id 作为这个 ping 方法的关键。我将发送一个 ping,并存储 iq id,假设 noDataConnection = true。现在,如果我收到一个具有相同 iq id 的 pong,我假设连接是活动的,所以我将设置 noDataConnection = false。但是,如果没有数据连接,我将继续发送设置 noDataConnection = true 的 ping,并且永远不会收到任何数据,因此除非它恢复并获得数据连接,否则它将保持为真。
摘自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>
乒乓:
<iq from='capulet.lit' to='juliet@capulet.lit/balcony' id='c2s1' type='result'/>
我对此唯一担心的是,如果我收到的 iq 不是我的 ping 的结果,并且我的应用程序将假定 noDataConnection = true,因为它收到的 iq id 与我的 ping iq id 不匹配已发送。有没有办法知道我收到的 iq 是否是我 ping 的结果?
谢谢。