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

Socket.io v3.1.2客户端连接服务端不触发connect事件返回404问题求助

Socket.IO连接404问题排查方案

你遇到的GET /socket.io/?xxx 404报错是Socket.IO部署的经典问题,可按以下优先级逐一排查:

  • 检查服务端监听对象是否正确
    Socket.IO挂载在http模块创建的server实例上,必须使用server调用监听方法,禁止使用app.listen启动服务,正确写法参考:
// 错误写法(会启动独立的HTTP服务,Socket.IO未挂载)
app.listen(3000, () => {})

// 正确写法
server.listen(3000, () => {
  console.log('服务启动在端口3000')
})
  • 补全Socket.IO服务端跨域配置
    Socket.IO 3.x及以上版本默认开启严格跨域校验,未配置跨域规则会直接拒绝连接返回404,修改io初始化代码:
const io = require("socket.io")(server, {
  cors: {
    origin: "*", // 生产环境请替换为前端实际域名
    credentials: true
  }
})
  • 确认客户端连接地址端口匹配
    本地测试时服务端如果运行在非80/443端口,客户端连接地址必须显式携带端口,比如服务端监听3000端口时,客户端连接地址为http://localhost:3000
  • 检查反向代理规则
    如果服务端部署时使用Nginx等反向代理,需要确保/socket.io路径的请求完整透传给Node服务,不能做路径重写,同时要开启WebSocket支持,Nginx配置参考:
location /socket.io/ {
  proxy_pass http://你的Node服务内网地址;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Host $host;
}
  • 补充客户端错误监听排查根因
    在测试脚本中添加连接错误监听,可直接定位具体错误原因:
socket.on('connect_error', (err) => {
  console.log('连接失败原因:', err)
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 10:36:04