【问题标题】:xmpp - ping pongxmpp - 乒乓球
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2014-09-26
    相关资源
    最近更新 更多