Cloud Run+IAP环境下NodeJS API的SSE缓冲问题求助
Cloud Run(IAP认证环境)下SSE事件被缓冲无法即时发送
- NodeJS API部署在经过IAP(身份感知代理)认证的Cloud Run服务上,发送SSE(服务器发送事件)时,所有事件都会被缓冲,需达到最大缓冲长度或所有事件完成后才批量推送给客户端。
- 本地开发环境中事件可即时发送,但线上环境里,Cloud Run日志显示API会立即执行写入操作,客户端却要等到所有事件处理完才能一次性收到。
- 怀疑问题出在GFE(谷歌前端)或IAP的头部剥离机制上,尝试添加
"X-Accel-Buffering": "no"头部后仍未解决。 - 补充说明:已禁用Cloud Run的HTTP/2功能,因为它和IAP搭配使用时会触发无限循环;查阅官方文档,未发现Cloud Run要求必须使用HTTP/2来支持SSE的说明。
部署命令
gcloud run deploy api-XXXX --quiet --image us-east4-docker.pkg.dev/hq-xxxxx/XXXX --update-env-vars NODE_CONFIG_ENV=develop --update-labels managed-by=github-actions,commit-sha=XXX --platform managed --format json --region us-east4 --project XXXX --no-cpu-throttling
当前API返回的响应头(已尝试多种配置)
"Content-Type": "text/event-stream; charset=UTF-8", "Cache-Control": "no-cache", "Connection": "keep-alive", "X-Accel-Buffering": "no",
内容的提问来源于stack exchange,提问作者jamesvillarrubia
相关产品推荐
相关产品推荐

