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

GCP上WebSocket连接虽有Ping-Pong仍约90秒断开问题求助

WebSocket连接GCP服务器后1006错误断开问题

问题细节

  • 客户端和Node.js服务器均使用原生WebSocket API开发
  • 本地测试完全正常,部署到GCP远程服务器后,连接会在60-90秒左右以错误码1006断开
  • webSocket.onerror无输出,但webSocket.onclose会触发
  • 客户端与服务器每10秒的Ping-Pong心跳机制正常(Firefox控制台可查)
  • 怀疑是GCP负载均衡器设置问题,但通过GUI管理时找不到相关文章提及的timeoutSec选项

基于GCP GUI的排查修复步骤

  1. 调整后端服务空闲超时时间

    • 打开GCP控制台,进入「负载均衡」页面,选中你的负载均衡器
    • 切换到「后端配置」标签,点击对应的后端服务
    • 在后端服务详情页找到「会话亲和性与超时」区域(部分版本界面标注为「连接超时」)
    • 将空闲超时时间调整为大于心跳间隔的数值(比如300秒/5分钟)——GCP HTTP(S)负载均衡默认空闲超时为60秒,与你遇到的断开时间完全匹配,这大概率是问题根因
  2. 确认负载均衡器协议配置

    • 确保负载均衡器按HTTP/1.1配置(WebSocket依赖HTTP/1.1完成握手)
    • 若使用HTTPS,检查SSL证书配置是否正常,保证握手过程无中断
  3. 排查防火墙规则

    • 确认GCP防火墙允许WebSocket使用的端口(默认80/443,自定义端口需单独放行)
    • 检查是否存在防火墙规则会在一段时间后主动切断长连接
  4. 服务器端添加日志验证

    • 在Node.js服务器上补充连接日志,确认断开是负载均衡器主动发起,而非服务器或客户端问题
    • 示例代码:
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
  console.log('新连接建立');
  ws.on('close', (code, reason) => {
    console.log(`连接断开: 错误码=${code}, 原因=${reason.toString()}`);
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:47:08