xmpp - 乒乓球

时间:2012-11-18 12:59:28

标签: xmpp

因此,为了知道是否还有活动数据连接,我每隔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>

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的结果?

感谢。

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用文本“ping”为我发送的iq id添加前缀,所以基本上如果我收到带有“ping”的iq前缀,那么它就是我ping的pong。