javascript - GAE Channel API - 通过 Javascript 检查套接字是否处于事件状态

标签 javascript google-app-engine channel-api ajax-push

我有一个使用 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/

相关文章:

google-app-engine - 从 AppEngine 下载日志,包括 Python 日志语句

java - 在客户端使用 Ref.create() 会导致错误

java - 从应用程序引擎数据存储中选择随机记录(java)

python - 使用 Google App Engine 的 Channel API 和开发服务器时出现 JavaScript 错误

java - AppEngine ChannelAPI 重新连接不起作用

javascript - JQuery 点击监听器调用得太早

Javascript:什么是 $result.rows.item(x) 变量类型?

javascript - JavaScript 中 10 + 0.5 是否等于 10.5?

google-app-engine - 是否有 GWT 库与新的 AppEngine Channel API 接口(interface)

javascript - Jquery.prepend() 删除最后插入的值