google-app-engine - Google App Engine Channels API 并从客户端发送心跳信号

标签 google-app-engine heartbeat channel-api

在从事 GAE 项目时,我们的一个要求是我们希望能够及时确定用户是否已离开应用程序。目前我们已经做到了这一点,但不可靠,所以我正在研究替代方案。

我们现在执行此操作的方法是设置一个函数,在 JS 中运行一段时间间隔,使用 AJAX 调用向 GAE 应用程序发送心跳信号。这种方式效果相对较好,但会产生大量流量和 CPU 使用率。如果我们在几分钟内没有听到客户端的心跳,我们就确定他们已经离开了应用程序。我们还连接了卸载函数来发送部分消息,再次通过 AJAX 调用。这不太有效,但大多数时候根本不起作用。

我们还使用 Channels API。我注意到的一件事是,我们的应用程序在使用开放 channel 时,客户端似乎也在以调用 http://talkgadget.google.com/talkgadget/dch/bind 的形式发送心跳信号。 。我相信这是在客户端打开 channel 时加载的 iFrame 和/或 JS 中发生的。

我的问题是,我在服务器端的应用程序可以如何 Hook 这些对 http://talkgadget.google.com/talkgadget/dch/bind 的调用并用它作为心跳信号?有没有更好的方法来检测客户端是否仍然连接,即使他们没有在客户端中主动执行任何操作?

最佳答案

Google 添加了此功能:

参见https://developers.google.com/appengine/docs/java/channel/overview

Tracking Client Connections and Disconnections

Applications may register to be notified when a client connects to or disconnects from a channel.

You can enable this inbound service in appengine-web.xml:

关于google-app-engine - Google App Engine Channels API 并从客户端发送心跳信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412037/

相关文章:

python - 在 Windows 上将自定义 CA 根证书添加到 GCloud 实用程序(或一般的 Python)

java - GAE fetchAsync 是否会比请求的生命周期更长?

iphone - 锻炼信息实时发送到手机

c++ - 在 C++ 中实现心跳以检查套接字连接的最佳方法是什么?

jquery - 谷歌应用引擎 : Browser to Server persistent connection

android - 如何从 Google App Engine 推送 Android 应用程序中的事件流

node.js - 有没有一种方法可以在不使用 sendGrid 或 mailJet 等中介服务的情况下使用 nodejs 发送 appengine 邮件

Java RMI心跳时间进程循环

java - AppEngine ChannelAPI 警告 : No file found for:/_ah/channel/connected/

android - 如何在 Android 上使用 WebRTC 进行实时通信?