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

App Engine Flex环境下使用ws库原生WebSocketServer无法建立连接的问题排查求助

App Engine Flex环境下使用ws库原生WebSocketServer无法建立连接的问题排查求助

大家好,我最近在搭建Yjs的WebSocket服务器时遇到了一个棘手的问题,折腾了好久没找到根因,想请各位帮忙分析下:

我用ws库的原生WebSocketServer搭建了Node.js服务,本地运行完全正常,但部署到Google App Engine Flex环境后,客户端始终无法建立WebSocket连接。以下是详细情况:

服务端简化代码

import WebSocket, { WebSocketServer } from 'ws';

const wss = new WebSocketServer({port: 1234});

wss.on('connection', (connection: WebSocket) => {
  connection.binaryType = 'arraybuffer';
  console.log('connected');
  
  connection.on('message', async (message: ArrayBuffer) => {
    console.log('message received');
  });
})

App Engine的app.yaml配置

runtime: nodejs
service: websocket
env: flex
runtime_config:
  operating_system: "ubuntu22"
  runtime_version: "22"
manual_scaling:
  instances: 1

客户端连接情况与错误

本地测试时,用这段代码可以正常建立连接:

new WebSocket('ws://localhost:1234/id-123', []);

但部署到GCP的预发布环境后,用线上地址连接就失败了:

new WebSocket('wss://websocket-dot-my-staging.ey.r.appspot.com:1234/id-123', []);

浏览器控制台报错:

WebSocket connection to 'wss://websocket-dot-my-staging.ey.r.appspot.com:1234/id-123' failed

我的疑问与诉求

  • 这个问题会不会和App Engine自动构建的安全连接机制有关?
  • App Engine Flex环境到底是否支持这种原生的WebSocketServer(不想用Socket.io这类封装库)?
  • 我不想切换现有的技术栈(比如换成Socket.io或者Cloud Run),因为已经花了大量时间搭建好现有架构,所以希望能找到根因直接解决问题,而不是更换技术方案。

麻烦各位帮忙看看问题出在哪了,感谢大家!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:33:02