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

部署Node.js WebSocket至GAE遇ERR_CONNECTION_TIMED_OUT问题求助

Troubleshooting Your GAE Flex WebSocket Deployment

Hey there, sorry to hear you’ve been stuck on this for 3 days—let’s walk through the most likely fixes for that ERR_CONNECTION_TIMED_OUT error:

1. Ensure Your App Listens on the Correct Network Interface

GAE Flex containers require your app to listen on 0.0.0.0 (not the default localhost) so it’s accessible from outside the container. Update your WebSocket server initialization, and don’t forget to explicitly import the uuid module (it looks like you’re using it but didn’t include the import in your code snippet):

var WebSocketServer = require('ws').Server,
    uuid = require('uuid');
wss = new WebSocketServer({ port: 65080, host: '0.0.0.0' }),
CLIENTS = [];

console.log('WS listening on 0.0.0.0:65080');
// ... rest of your connection logic

Also make sure uuid is listed in your package.json dependencies—run npm install uuid --save locally before redeploying if it’s missing. A missing dependency will cause your instance to fail silently, leading to timeout errors.

2. Tweak Your app.yaml Configuration

A few small adjustments can fix port forwarding and compatibility issues:

  • Add a runtime_config section to specify your target Node.js version (avoids unexpected compatibility gaps):
    runtime: nodejs
    env: flex
    api_version: 1
    service: websockets
    manual_scaling:
      instances: 1
    runtime_config:
      nodejs_version: 18 # Match your app's Node.js version
    network:
      forwarded_ports:
        - 65080
      session_affinity: true
      instance_tag: websocket
    
  • Double-check that your firewall rule’s target tag exactly matches websocket (the instance_tag in your app.yaml). Your screenshot looks correct here, but it’s worth verifying again in the Cloud Console to rule out typos.

3. Verify Your Client Connection URL

GAE Flex routes traffic through its load balancer, so you can’t connect directly to an instance’s internal IP. Use your full service domain for connections:

  • For unsecure connections: ws://websockets-dot-[YOUR_PROJECT_ID].appspot.com:65080
  • For production (secure): wss://websockets-dot-[YOUR_PROJECT_ID].appspot.com:65080

4. Check GAE Instance Startup Logs

The most critical debug step is reviewing your instance’s logs to see if it even started successfully:

  1. Navigate to the Google Cloud Console > App Engine > Services
  2. Select your websockets service
  3. Click the running instance, then go to the Logs tab
    Look for errors like Cannot find module 'uuid' or port binding failures—these will confirm if your instance crashed before it could accept connections.

5. Confirm Port Forwarding Quotas

GAE Flex allows custom forwarded ports, but double-check that you haven’t hit any project-level quota limits. Also note that forwarded ports support both HTTP and HTTPS, but wss connections rely on GAE’s automatic SSL provisioning, which should work out of the box for custom ports.


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:05:14