【问题标题】:Server Sent Events not being sent on Google App Engine but work fine locally. How to send multiple messages from sever?服务器发送的事件未在 Google App Engine 上发送,但在本地工作正常。如何从服务器发送多条消息?
【发布时间】:2021-04-15 23:30:11
【问题描述】:

目标

我需要我的后端向我的客户推送几个答案,我需要 puppeteer 来运行后端。 Puppeteer 需要一些时间来工作,但有定期的中间结果,应该定期向客户端发送更新(总共,一个请求-响应s-cycle 需要不到 60 秒,这似乎是上限GAE)。

潜在的 GAE 问题:

主要问题

因此,我重新实现了我的代码以使用服务器发送的事件(基于 http)。我希望这能以标准方式工作。它在本地运行良好。它不适用于生产。 它最终会回答客户端,但只有当我关闭连接服务器端然后一次性发送所有内容时。它不会定期更新客户端。 这只发生在 GAE 上,而不是本地。

我尝试了什么?

我确实刷新了 sse-response,否则压缩 nodejs 库leads to a similar behaviour

我也设置了这些标题,尤其是。 X-Accel-Buffering,取自here

res.setHeader('Access-Control-Allow-Origin', "*");
res.setHeader("X-Accel-Buffering", "no");
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader("Access-Control-Allow-Origin", "*");   
res.setHeader('Connection', 'keep-alive');

问题

如何让服务器发送的事件与 GAE 上的 nodejs 和 puppeteer 一起工作? 或者,有没有人找到任何回答方式(在 GAE 中以弹性或标准或任何其他方式)一个客户端请求(无论是 http get、sse、websockets),随着时间的推移有多个服务器响应,并且 puppeteer 正在运行?这个google-groups 聊天都表明 SSE 可以工作并使用 Pusher。 Pusher 是带有 Angular 客户端的 GAE 和 nodejs 的替代品吗?如果我经历了用 docker 镜像做 GAE-flex 的“痛苦”(对我来说,我是经验不足的全栈开发人员,也不想做 ops),那行得通吗?是否有一些设置我可以更改,而不是“缓冲”响应服务器端?

【问题讨论】:

    标签: node.js google-app-engine puppeteer


    【解决方案1】:
    1. 您的本地 GAE [标准] 环境不是 GAE 生产的精确复制品或模拟。如果您使用的是 GAE Python2 标准,则尤其如此。您应该牢记这一点。我知道这一点是因为我也遇到过服务器发送事件的这个问题。这意味着在开发环境中工作的东西可能在生产环境中无法工作,因此首先要非常小心地确认 GAE 文档中哪些有效,哪些无效。

    2. GAE 标准不支持流式传输,这本质上就是 SSE。此外,App Engine 标准对每个请求都有 1 分钟的截止时间,即作为标准应用的一部分对 App Engine 的每次调用都必须在一分钟内返回

    3. 我认为 GAE Flexible 没有这些限制,因此您应该尝试一下。请参阅此link,其中讨论了标准和灵活之间的差异。当我几年前遇到这个问题时(尝试在 Python 上进行 SSE),我最终切换到了 Compute Engine 并进行了 PubSub,但还有其他原因选择了这条路线,而不是尝试 GAE Flexible

    【讨论】:

    • 接受了答案,因为似乎使用灵活是唯一的方法。我的额外要求是让 puppeteer 运行。我通过 dockerfile 和自定义运行时实现了这一点。这对于两个普通目标来说是相当多的错误:“SSE 和 puppeteer”,但似乎别无选择。
    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2015-08-02
    • 2015-10-24
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多