android - 在移动设备(例如 Android)上使用 XMPP 时 ping 服务器的频率是多少?

标签 android xmpp ping battery

我正在开发使用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/

相关文章:

c# - Xamarin.iOS Ping导致System.InvalidOperationException

java - 如何防止剪贴板监视器复制剪贴板数据两次?

android - 在 Android 模拟器上安装孟加拉语字体

android - MapView.preLoad() 究竟做了什么?

ios - 用户在 OpenFire 中在线显示,即使应用程序处于后台或处于终止状态

windows - 为什么它像没有线程一样运行?

javascript - 允许用手指缩放谷歌地图 - PhoneGap for Android

android - 在 android 中使用 Smack 的 ejabberd 连接给出连接超时错误

android - 从 Android 设备登录 ejabberd 服务器失败

python - Python ping 扫描脚本问题