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

时间:2014-12-16 17:12:00

标签: server-sent-events google-app-engine

所有

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

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

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

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

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

我查看了Google Queue API,但我觉得我做的事情比你需要的要困难得多。如果您不打算“轮询”来自网页的更改...并且您希望在其他用户进行更改时(可能使用Android设备而非典型网页)从SSE源接收通知,并且已部署应用程序正在Google Application Engine上运行,您会推荐什么?

非常感谢,

兰迪

1 个答案:

答案 0 :(得分:0)

你走在正确的轨道上,并不确定你为什么要使用后台模块,而是根据我的理解你需要:

  1. 您的前端模块收到更新
  2. 您检索接收该更新的所有设备的列表
  3. 使用队列服务通过GCM将更新发送到每个设备
  4. 为什么要使用队列?,因为前端实例每个请求的时间限制为1分钟,您需要排队工作以超过该时间为您(可能)数千名用户提供服务

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

相关问题