xmpp-乒乓球

xmpp-乒乓球,xmpp,Xmpp,因此,为了知道是否仍然存在活动数据连接,我每隔5分钟发送一次ping,然后等待服务器响应。所以基本上,我使用iq id作为这个ping方法的键。我将发送一个ping,并存储iq id,然后我将假设noDataConnection=true。现在,如果我收到一个具有相同iq id的pong,我假设该连接是活动的,因此我将设置noDataConnection=false。但是,如果没有数据连接,我将继续发送pings设置noDataConnection=true,并且永远不会接收任何ping,因此除

因此,为了知道是否仍然存在活动数据连接,我每隔5分钟发送一次ping,然后等待服务器响应。所以基本上,我使用iq id作为这个ping方法的键。我将发送一个ping,并存储iq id,然后我将假设noDataConnection=true。现在,如果我收到一个具有相同iq id的pong,我假设该连接是活动的,因此我将设置noDataConnection=false。但是,如果没有数据连接,我将继续发送pings设置noDataConnection=true,并且永远不会接收任何ping,因此除非恢复并获得数据连接,否则将保持为true

摘录自: 平:


庞:


我唯一关心的是,如果我收到的iq不是ping的结果,我的应用程序将假定noDataConnection=true,因为它收到的iq id与发送的ping iq id不匹配,该怎么办。有没有办法知道我得到的智商是否是我的ping的结果


谢谢。

我的解决方案是在我发送的iq id前面加上一个文本“ping”,因此基本上如果我收到一个带有“ping”的iq前缀,那么它就是我的ping的pong

不确定我是否能跟上你:如果
iq结果
类型与
get
类型具有相同的
id
,那么你收到了一个pong。其他
iq结果
类型应具有不同的
id
<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'/>