【发布时间】:2013-01-17 17:58:11
【问题描述】:
因此,为了了解是否仍有活动的数据连接,我每隔 5 分钟发送一次 ping,并等待服务器响应。所以基本上,我使用 iq id 作为这个 ping 方法的关键。我将发送一个 ping,并存储 iq id,然后假设 noDataConnection = true。现在,如果我收到一个具有相同 iq id 的 pong,我假设连接是活动的,所以我将设置 noDataConnection = false。但是,如果没有数据连接,我将继续发送设置 noDataConnection = true 的 ping,并且永远不会收到任何数据,因此它将保持为 true,除非它恢复并获得数据连接。
摘自http://xmpp.org/extensions/xep-0199.html#s2c: 平:
<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 的结果?
谢谢。
【问题讨论】:
-
不确定我是否可以关注你:如果
iq result类型与get类型具有相同的id,那么你已经收到了一个pong。其他iq result类型应该带有不同的id。
标签: xmpp