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

求助:无法连接Python 3.10搭建的安全WebSocket服务器

Python WSS服务器与Node.js客户端Ngrok连接问题解决方案

问题根源

  1. Ngrok命令格式错误,导致端口转发失效
  2. Python服务器绑定localhost,无法接收外部转发请求
  3. 自签名证书未被客户端信任,触发SSL验证错误
  4. Node.js客户端连接地址配置错误,指向了本地sockjs服务而非Ngrok转发的WSS服务器

分步修复

1. 修正Ngrok转发命令

当前命令ngrok tcp 3000 tcp://5.tcp.eu.ngrok.io:16233 -> localhost:3000格式错误,正确的TCP转发只需指定本地端口,Ngrok会自动分配公网地址:

ngrok tcp 3000

运行后复制Ngrok输出的公网地址(类似tcp://5.tcp.eu.ngrok.io:16233),客户端连接时使用wss://协议前缀,即wss://5.tcp.eu.ngrok.io:16233。

2. 修改Python服务器绑定地址

原代码绑定localhost仅允许本地请求,需改为0.0.0.0以接收外部转发请求:

import ssl
import websockets
import asyncio

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
# 生成证书时证书与私钥存于同一文件,此处参数可复用cert.pem
ssl_context.load_cert_chain("cert.pem", "cert.pem")

async def new_client_connected(websocket):
    print("新客户端已连接")
    # 此处添加业务逻辑处理

async def start_server():
    print("服务器已启动")
    # 绑定0.0.0.0允许所有地址访问
    await websockets.serve(new_client_connected, '0.0.0.0', 3000, max_size=9000000, ssl=ssl_context)

asyncio.run(start_server())

3. 解决自签名证书信任问题

自签名证书默认不被浏览器/客户端信任,可通过以下方式处理:

  • 开发环境临时绕过:Chrome浏览器中开启chrome://flags/#allow-insecure-localhost选项,允许本地地址使用无效证书,重启浏览器生效。
  • 全局信任证书(推荐):
    • Windows:双击cert.pem → 安装证书 → 选择「本地计算机」→ 存储到「受信任的根证书颁发机构」
    • macOS:双击cert.pem → 打开钥匙串访问 → 找到证书 → 右键「显示简介」→ 信任栏设置「使用此证书时」为「始终信任」
    • Linux:将cert.pem复制到/usr/local/share/ca-certificates/,执行sudo update-ca-certificates

4. 修正Node.js客户端连接配置

客户端控制台报错指向https://192.168.0.105:8080/sockjs-node/info,说明客户端未连接到Ngrok转发的WSS服务器,需修改客户端代码,将连接地址改为Ngrok提供的wss://地址,而非本地的8080端口服务。

验证步骤

  1. 重启Python服务器
  2. 重新启动Ngrok并复制正确的WSS地址
  3. 更新Node.js客户端连接地址
  4. 打开客户端页面,检查开发者控制台是否仍有连接错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:45:34