【发布时间】:2021-04-15 23:30:11
【问题描述】:
目标
我需要我的后端向我的客户推送几个答案,我需要 puppeteer 来运行后端。 Puppeteer 需要一些时间来工作,但有定期的中间结果,应该定期向客户端发送更新(总共,一个请求-响应s-cycle 需要不到 60 秒,这似乎是上限GAE)。
潜在的 GAE 问题:- Websocket 不适用于标准环境。
- Puppeteer does not work with the flex environment.
主要问题
因此,我重新实现了我的代码以使用服务器发送的事件(基于 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