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

Socket.io出现ERR_CONNECTION_REFUSED错误 请求技术协助

解决Socket.io连接ERR_CONNECTION_REFUSED问题

我帮你排查了代码里的关键问题,咱们一步步来解决这个连接拒绝的故障:

1. 服务器端Socket.io绑定错误

你在代码里已经创建了独立的HTTP服务器实例server,并且把Socket.io绑定到了这个实例上,但最后启动服务时却用了app.listen()——这会创建一个全新的HTTP服务器,和你绑定Socket.io的那个不是同一个!这就导致Socket.io根本没在8080端口运行,客户端自然连不上。

修改server.js的启动代码

把原来的:

app.listen(port); 
console.log("App listening on port " + port); 

替换成:

server.listen(port); 
console.log("App listening on port " + port); 

这样Socket.io和Express就共用同一个HTTP服务器,8080端口就能同时处理HTTP请求和Socket连接了。

2. 客户端连接地址问题

如果你的Ionic App是在模拟器/真机上运行,localhost指向的是设备本身,而不是你的开发电脑。你需要把连接地址改成电脑的局域网IP(比如你代码注释里的192.168.0.102):

修改客户端连接代码

把:

this.socket = io('ws://localhost:8080', { transports: ['websocket'] })

替换成:

this.socket = io('http://192.168.0.102:8080', { transports: ['websocket'] })

注意:用http协议即可,Socket.io会自动完成WebSocket协议升级;确保你的设备和开发电脑在同一个局域网内。

额外排查建议

  • 重启Node服务器,确保修改后的代码生效;
  • 在客户端的connect_error事件里打印错误详情,方便定位更细节的问题:
    this.socket.on('connect_error', (error) => {
      this.connectionError = "0";
      console.error('Socket连接错误详情:', error); // 新增日志
    })
    
  • 再次确认防火墙没有拦截8080端口,或者临时关闭防火墙测试。

修改完成后,应该就能正常建立Socket连接了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:46:05