2

我有一个使用通道 API 的应用程序。连接应该始终处于活动状态(24x7),并且我已经以这样的方式实现它,即每次通道断开连接时,都会自动创建一个新通道。这在大多数情况下都可以正常工作,但我有一些场景不会调用 onError() 方法(例如连接的 WIFI 更改,或者计算机进入睡眠状态并返回)。而且我的 JS 应用程序错误地假设通道仍然处于活动状态,而实际上它不是。

我想到的一种解决方案是 ping 服务器要求发送消息。就像一个保持活力。但这对服务器来说是一个很大的负担。(例如,每 10 秒发送 1000 个 ping 请求的客户端相当于每秒 100 个请求)

所以我想知道是否有一种方法可以检查本地连接是否有效,这样我就不会无意中在我的服务器上进行 DoS 附加。

谢谢

4

2 回答 2

3

您可以创建一个 GAE cron 作业,告诉您的服务器发送保持活动消息,而不是让客户端请求它。这样,无论您拥有多少客户,您每 10 秒只有 1 个请求。

不过,您需要将活动客户端列表存储在 memacache/datastore 中。

于 2013-02-22T07:29:21.593 回答
0

恐怕别无选择,只能要求服务器发送消息并检查它是否在合理的时间范围内返回。

您的 JS 应用程序可以定期 ping 一些小()静态文件(甚至可能在 GAE 之外)以检查连接是否断开或计算机是否进入休眠状态。这可能更便宜,但不会给你 100% 的保证。

于 2013-02-22T06:13:23.837 回答