You need to enable JavaScript to run this app. Azure Web App部署NodeJS SSE服务HTTP2下客户端请求pending超时问题
优惠活动
大模型
产品
解决方案
定价
更多

Azure Web App部署NodeJS SSE服务HTTP2下客户端请求pending超时问题

Azure Web App 部署SSE服务Pending问题解决方案

核心原因是Azure App Service默认启用的应用请求路由(ARR)缓冲、托管层反向代理缓冲机制会拦截流式响应,攒到足够大小才返回给客户端,是导致SSE请求长期Pending的核心原因。需要调整以下配置:

1. 调整平台层面配置

  • 进入Azure门户对应Web App资源的「配置」-「应用程序设置」页面,添加配置项:
    • 名称:WEBSITE_DYNAMIC_CACHE,值:0,禁用Azure动态缓存
  • 若使用Windows宿主的NodeJS运行时,默认采用IISNode托管,需要在项目根目录新增web.config文件,添加以下配置:
<configuration>
  <system.webServer>
    <handlers>
      <add name="iisnode" path="你的服务入口文件.js" verb="*" modules="iisnode"/>
    </handlers>
    <!-- 禁用IIS响应缓冲 -->
    <httpProtocol>
      <customHeaders>
        <add name="X-Accel-Buffering" value="no" />
      </customHeaders>
    </httpProtocol>
    <iisnode flushResponse="true" />
    <!-- 禁用压缩,避免压缩模块缓冲流式内容 -->
    <urlCompression doStaticCompression="false" doDynamicCompression="false"/>
  </system.webServer>
</configuration>

若使用Linux容器/内置Linux NodeJS运行时,不需要配置web.config,响应头添加X-Accel-Buffering: no即可禁用内置Nginx代理的缓冲。

2. 调整服务端响应代码

现有代码缺少禁用代理缓冲的标识,且没有手动刷新响应缓冲,修改后代码参考:

response.writeHead(200, {
    'Content-Type': 'text/event-stream',
    'Cache-Control': 'no-cache, no-store, must-revalidate', // 补充全量禁用缓存规则
    'Connection': 'keep-alive',
    'Access-Control-Allow-Origin': "*",
    'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept',
    'X-Accel-Buffering': 'no', // 禁用所有反向代理的缓冲逻辑
    'Content-Encoding': 'identity' // 强制不压缩响应内容
});

response.write('id: ' + id + '\n');
if (event) {
    response.write('event: ' + event + '\n');
}
response.write("data: " + data + '\n\n');
// 手动刷新响应缓冲,立即推送内容到客户端
response.flush();

3. 额外配置校验

  • 进入Web App「配置」-「常规设置」页面,开启「始终在线」功能,避免服务空闲被回收导致SSE连接异常断开。
  • Azure平台默认请求超时阈值为230秒,若需要保持长连接超过4分钟,需要每隔30秒左右发送一条SSE注释帧(格式为:\n\n,冒号开头的空行),避免连接被平台主动断开。
  • 若配置了Azure CDN、应用网关等前置代理,需要单独关闭对应代理的响应缓冲规则。

内容的提问来源于stack exchange,提问作者Djoezz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:45:02