我有一个使用 channel API 的应用程序。连接应该始终处于事件状态(24x7),并且我以这样的方式实现它:每次 channel 断开连接时,都会自动创建一个新 channel 。这在大多数情况下工作正常,但我遇到了 onError() 方法不会被调用的情况(例如,连接的 WIFI 更改,或计算机进入休眠状态并返回)。我的 JS 应用程序错误地假设该 channel 仍然存在,但实际上它并不存在。
我想到的一个解决方案是对服务器执行 ping 操作,请求发送消息。就像“保持活力”一样。但这对于服务器来说是一个很大的负载。 (例如,每 10 秒 1000 个客户端发送 ping 请求相当于每秒 100 个请求)
所以我想知道是否有一种方法可以检查本地连接是否有效,这样我就不会无意中在我的服务器上进行 DoS 连接。
谢谢
最佳答案
您可以创建一个 GAE cron 作业,告诉您的服务器发送保持事件消息,而不是让客户端请求它。这样,无论您拥有多少客户端,每 10 秒只有 1 个请求。
不过,您需要将事件客户端列表存储在 memacache/datastore 中。
关于javascript - GAE Channel API - 通过 Javascript 检查套接字是否处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017492/