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

Node.js服务端socket.io的connection事件不触发问题排查

错误定位与修复

你的代码共有2处问题,其中直接导致connection事件不触发的是前端客户端初始化错误:

  • 第一处(核心错误):main.js 中的Socket.IO客户端初始化变量名错误
    你在chat.html中引入的/socket.io/socket.io.js是运行在浏览器端的客户端脚本,它会在浏览器全局作用域挂载名为io的构造方法,不存在后端Node环境里定义的io_l变量。这行代码执行时会直接抛出引用错误,根本没有发起WebSocket连接请求,后端自然不会触发连接回调。
    错误代码:

    // public/js/main.js 错误写法
    const socket = io_l();
    

    修复为:

    // public/js/main.js 正确写法
    const socket = io();
    
  • 第二处(逻辑隐患):server.js中端口取值顺序写反
    你当前写的var PORT = 3000 || process.env.PORT;因为3000是真值,会永远固定使用3000端口,环境变量中配置的端口不会生效,属于逻辑写法错误。
    错误代码:

    // server.js 错误写法
    var PORT = 3000 || process.env.PORT;
    

    修复为:

    // server.js 正确写法
    const PORT = process.env.PORT || 3000;
    

修复完成后重启服务,刷新浏览器页面,后端终端就会正常输出New websocket connection!的连接日志。

排查提示:遇到前端连接类问题优先打开浏览器开发者工具的Console面板,JS运行时的报错会直接定位问题原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:09:22