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

Socket.io.js net::ERR_ABORTED & 404错误:局域网访问失败求助

解决Socket.io局域网访问socket.io.js 404的问题

嗨,刚看到你的问题,我之前刚开始用Socket.io的时候也踩过一模一样的坑!咱们一步步来解决:

核心问题根源

你说的没错,localhost是设备的回环地址——当你在自己电脑上访问时,localhost指向你自己的机器,但其他局域网设备访问时,localhost会指向它们自己的设备,自然找不到你电脑上的socket.io.js文件。

具体解决方案

1. 服务端绑定所有网络接口(关键!)

你的server.js里,原来的监听代码可能只绑定了localhost,导致只有本地能访问。把监听地址改成0.0.0.0,这样服务器会监听所有可用的网络接口(包括局域网IP):

// server.js 里的监听部分修改成这样
http.listen(3000, '0.0.0.0', () => {
  console.log('服务器运行在 http://你的局域网IP:3000');
});

0.0.0.0表示监听所有网卡的请求,这样局域网内的其他设备就能通过你的PC的局域网IP访问到服务了。

2. 前端正确引入socket.io.js

别再用localhost来引入脚本了,推荐两种方式:

  • 相对路径引入(最省心):
    Socket.io会自动在服务器的根路径下提供socket.io/socket.io.js文件,所以直接用相对路径就行,不管是本地还是局域网访问都能自动适配:
    <script src="/socket.io/socket.io.js"></script>
    <script>
      // 连接的时候也用相对路径,不用写死IP
      const socket = io();
    </script>
    
  • 动态获取服务器地址(适合PHP场景):
    如果你想用PHP动态生成地址,别用$_SERVER['SERVER_NAME'](它可能返回配置的域名,不一定是当前访问的IP),改用$_SERVER['HTTP_HOST'],它会自动获取用户实际访问的域名/IP+端口:
    <script src="http://<?php echo $_SERVER['HTTP_HOST']; ?>/socket.io/socket.io.js"></script>
    <script>
      const socket = io('http://<?php echo $_SERVER['HTTP_HOST']; ?>');
    </script>
    

3. 验证步骤

  • 先查你的PC局域网IP:Windows用ipconfig找“以太网适配器”下的IPv4地址;Mac/Linux用ip addr找类似192.168.x.x的地址。
  • 重启你的Node.js服务,确保服务端已经绑定0.0.0.0。
  • 用其他设备打开浏览器,访问http://你的局域网IP:3000,打开控制台看看还会不会出现404错误。

4. 额外注意点

  • 检查你的PC防火墙:如果还是连不上,大概率是防火墙阻止了端口访问,可以临时关闭防火墙测试,或者在防火墙里添加允许该端口(比如3000)的入站规则。
  • 确保端口没被占用:如果3000端口被其他程序用了,换个端口比如3001试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:35:18