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

Python连接NodeJS的ws服务端报WebSocket HTTP 200错误是什么原因?

错误原因

该报错出现在WebSocket握手阶段:正常WebSocket连接握手时服务端应返回101 Switching Protocols状态码,返回200说明Python客户端的握手请求根本没有正确触发Node端的WebSocket服务逻辑,该错误和你代码中的密钥校验逻辑无关,密钥校验是连接建立成功后才会执行的逻辑。最常见的触发原因如下:

  • 端口被其他HTTP服务占用:你指定的2909端口上已经运行了普通HTTP服务,Node的ws服务没有成功绑定端口(部分场景下端口被占启动不会抛出直观报错),导致客户端连接到了其他HTTP服务上返回200
  • IP地址配置错误:运行Node服务的设备局域网IP并不是你填写的192.168.1.50,或客户端和服务端不在同一个局域网、无法访问该IP
  • 防火墙/代理拦截:服务端防火墙拦截了2909端口的入站请求,或客户端开启了系统代理,WebSocket握手请求被代理转发到了其他服务
  • 依赖版本兼容问题:你安装的ws包版本和Python的websockets库存在罕见的握手兼容问题

排查方案

  1. 先在运行Node服务的设备上,用浏览器访问http://127.0.0.1:2909,正常ws服务会返回426 Upgrade Required,如果返回其他内容直接说明端口被占,更换Node服务端口后重启即可
  2. 确认Node设备的实际局域网IP:Windows设备运行ipconfig、Linux/macOS设备运行ip addr查看网卡IP,和Python代码中填写的地址比对
  3. 临时关闭服务端和客户端的防火墙,或手动放行2909端口的TCP规则后重试
  4. 关闭客户端的系统代理,或给websockets连接配置跳过局域网代理规则
  5. 可先在Node设备本地运行Python代码,将地址改为ws://127.0.0.1:2909测试:如果本地能正常连接则可以确定是网络配置问题,如果本地也报错可以重新安装ws依赖后重试:
npm uninstall ws && npm install ws

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:03