如何使事件流(EventSource())与cloudflare配合使用?

问题描述 投票:0回答:1

基本上我使用的是 ai 工具 api,所以我首先创建一个 POST 请求来创建数据库条目,然后获取流输出,我使用 EventSource()

即使在部署中(没有 cloudflare)也能完美工作

我已经尝试了所有这些改变

  1. 我在 cloudflare 中启用了开发模式
  2. 我也添加了这些缓存规则,完全绕过缓存 第一条规则
(any(http.request.headers["accept"][*] eq "text/event-stream")) or (any(http.request.headers[":accept:"][*] eq "text/event-stream"))

第二条规则

(http.request.uri contains "/api/tools/video-generate?user=") or (http.request.uri contains "/api/tools/image-generate?user=") or (http.request.uri contains "/api/tools/music-generate?user=")
  1. 我还在 API 后端添加了这个作为标头
res.writeHead(200, {
    "Content-Type": "text/event-stream",
    "Content-Encoding": "none",
    "Cache-Control": "no-cache, no-transform",
    Connection: "keep-alive",
    "X-Accel-Buffering": "no",
    "Access-Control-Allow-Origin": allowedOrigins.includes(origin)
        ? origin
        : "null",
    "Access-Control-Allow-Methods": "GET",
    "Access-Control-Allow-Headers": "Content-Type, Authorization",
});
  1. 我还在我的 nginx 配置中添加了这个
    proxy_set_header X-Accel-Buffering no;

现在在部署中,当代码运行时,我收到此错误

ERR_HTTP2_PROTOCOL_ERROR
- 我曾经遇到过这个错误

但有些用户收到此错误

ERR_QUIC_PROTOCOL_ERROR
- 但现在每次我只收到此错误

所以肯定有问题,我认为其他用户收到其他不确定的错误消息

我什至添加了页面规则 enter image description here 但仍然出现错误

ERR_QUIC_PROTOCOL_ERROR

同样,当我执行完第四点后,在 api 调用中,我能够看到 EventStream,但是一旦完成新的写入请求,就会出现错误。第一个写入请求确实收到,但其余的则没有收到。

next.js caching cloudflare server-sent-events event-stream
1个回答
0
投票

您找到解决方案了吗?我还在 Cloudflare 中完成了所有可调整的配置,但仍然无法正常工作。当我通过 VPS / Traefik 直接访问我的应用程序时它可以工作,但是当它隐藏在 Cloudflare 后面时什么也不会发生,哈哈。

© www.soinside.com 2019 - 2024. All rights reserved.