You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS API Gateway Websocket连接失败求助:Flask SocketIO部署排查

排查方向与解决方案

1. API Gateway WebSocket协议适配检查

  • 确认API Gateway的路由配置匹配SocketIO握手路径:SocketIO默认使用/socket.io/路径握手,API Gateway必须配置$connect、$disconnect、$default三个WebSocket核心路由,且$connect路由的集成目标指向NLB的8765端口。
  • 检查集成请求设置:集成请求需设为GET方法,同时配置传递SocketIO握手必需的查询参数(如EIO、transport),确保这些参数能完整透传到后端。

2. 426状态码针对性排查

HTTP 426代表协议需升级,说明API Gateway未正确处理WebSocket升级请求:

  • 确认API Gateway为WebSocket类型,而非误选HTTP API。
  • 检查集成响应配置:$connect路由需透传后端返回的升级响应头,包括Connection: Upgrade、Upgrade: websocket、Sec-WebSocket-Accept,禁止API Gateway修改这些关键头信息。

3. NLB与API Gateway网络配置验证

  • 确认NLB目标组为TCP类型(SocketIO基于TCP协议),健康检查配置为TCP端口8765的连通性检测。
  • 检查VPC链路(若为私有集成):确保API Gateway的VPC链路已关联NLB所在VPC,安全组允许API Gateway的IP访问NLB的8765端口。
  • 验证NLB监听端口:API Gateway集成指向的NLB端口必须是8765,且NLB监听规则未修改端口转发逻辑。

4. SocketIO客户端兼容性调整

SocketIO默认传输方式可能与API Gateway存在兼容问题,调整前端连接代码:

  • 强制使用websocket传输,跳过轮询尝试:
    const socket = io('https://your-api-gateway-url', {
      transports: ['websocket'],
      path: '/socket.io/'
    });
    
  • 同步客户端path参数与API Gateway的路由前缀:若API Gateway配置了自定义路径前缀,需修改客户端的path参数匹配该前缀。

5. 日志调试定位

  • 开启API Gateway执行日志,查看$connect请求的详细错误信息,重点排查集成请求/响应的头信息、参数传递是否异常。
  • 在EC2上启用Flask SocketIO调试日志,确认是否收到API Gateway转发的连接请求,以此判断问题出在API Gateway到NLB的转发环节,还是后端处理环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 12:33:10