使用 GAE 后台线程触发多个 Web 客户端的 SSE



All,

我已经完成了基本的GAE"留言簿"示例,该示例使用Google Cloud Endpoints和Google Cloud Messaging。 我可以成功地将便笺添加到留言簿中,并使其显示在所有注册的设备上。

我还使用超级简单的服务器发送事件 (SSE( 机制让网页启动事件源,然后在收到事件时更新自身。 但是,单独的网页似乎会创建自己不同的事件源(即使对事件源使用相同的 URI(,从而在自己的时间获取自己的事件。

这里的目标是创建一些协作,以便用户操作可以来自 android 设备或网页,然后将接收的操作的效果推送到所有连接的用户/设备/网页。

我假设我将需要一个后台模块,并且端点和"普通"网页/查询都会将收到的用户操作引导到该后台模块。 我相信我能走得那么远。 接下来,我需要后台模块来触发向所有相关方发送推送通知。我相信我可以从该后台模块向注册的Android设备触发Google可以消息传递事件。

但我不清楚后台模块如何成为 SSE 的源,或者后台模块如何最好地与已经是 SSE 源的前台模块进行通信。

我看过Google Queue API,但我有一种感觉,我正在使一些事情变得非常容易,比它需要的要困难得多。 如果您不打算"轮询"网页中的更改...并且您希望在其他用户进行更改时接收来自SSE源的通知,可能使用Android设备而不是典型的网页,并且部署的应用程序在Google应用程序引擎上运行,您会建议什么?

非常感谢,

兰迪

你走在正确的轨道上,不太确定你为什么要使用后台模块,但据我所知,你需要:

  1. 前端模块接收更新
  2. 检索接收该更新的所有设备的列表
  3. 使用队列服务通过 GCM 将更新发送到每台设备

为什么要使用队列? 因为前端实例对每个请求有 1 分钟的时间限制,您需要排队工作才能超过该时间,以便(可能(为数千个用户提供服务。

现在,如果您已经有一个后端实例(没有 1 分钟限制(,您可以迭代列表并在一个请求上发送所有消息。我相信您有 24 小时的请求限制,所以您应该没问题。但是在这种情况下,您不需要前端模块,您可以直接点击此服务器。

最新更新