我正在开发使用XMPP协议(protocol)的IM应用程序。我认为我的问题很简单:
我应该多久对服务器执行一次 ping 操作?
什么是 ping 服务器的好模式,以防止失去连接,并且不要太频繁地执行此操作,以免耗尽电池?
最佳答案
这要看情况。您必须在电池生命周期和死连接检测/连接超时避免之间进行权衡。可能没有适合每个用户的默认值。例如,某些移动运营商(即我收到来自法国运营商的报告)的 TCP 超时时间似乎低得离谱,小于 2 分钟,这意味着您的 ping 间隔必须低至 2 分钟。但每 2 分钟激活一次移动 radio 对于电池生命周期来说是致命的。
我建议客户端每 30 分钟检查一次,在 30 分钟内是否没有收到 Stanza/Nonza,如果没有,则发送 ping。斯马克的ServerPingWithAlarmManager
在 Android 上正是这样做的。
在服务器端,您应该做类似的事情,但最好使用更长的时间跨度,例如35或40分钟,为了让客户端大部分时间都能ping“赢”。
我认为这是最好的权衡。但这个值只是一个最好的猜测,并没有通过大量的实验和评估来计算。您可能希望将其设为用户设置和/或提供某种或多或少的启发式方法来确定最佳值。
关于android - 在移动设备(例如 Android)上使用 XMPP 时 ping 服务器的频率是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075686/