如何有效地检测客户端是否处于脱机服务器端

时间:2015-01-01 15:20:10

标签: android google-app-engine server-side offline server

对于我的Android应用程序,我正在寻找一种检测客户端连接状态的优雅方法。服务器需要知道客户端是在线还是离线。

我已阅读此answer

  

...服务器应该在一些之后发送ping   设备和设备的时间间隔应该回复。如果设备不是   回复这意味着用户离线...

但我觉得持续的ping是蹩脚的,而且客户端和服务器端的资源都很重。 是否有更优雅,最好是事件驱动的方法来检测客户端是否处于离线状态?

虽然我的情况适用于Android中的Android和Google App Engine,但我计划扩展到Web和ios客户端,因此首选依赖解决方案的平台。

更新 同样的答案也提到套接字连接:

  

...基本上你需要与服务器创建套接字连接并交换ping

据我所知,与服务器保持套接字连接总是适合多人游戏,但它是否适合永远开启,但只是偶尔发送/接收数据,如服务?

1 个答案:

答案 0 :(得分:5)

不幸的是,ping方法是最好的。您提出的事件驱动的解决方案乍一看似乎很优雅,但是,当进一步理论化时,它会引发一些问题。 例如,假设你的客户突然失去他所有的击球手,他的手机突然死了。因此,客户端无法向您的服务器发送他不再在线的请求。同时,在服务器端,他仍被标记为" online"。

ping机制通过提出一个前提来缓解这个问题,即"如果没有及时收到ping - >将用户标记为离线"。

祝你好运!