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

如何使用JavaScript实现同一局域网内客户端与Node服务的通信

完全可以实现,同一局域网环境下不需要将网站或服务托管到公网,就能实现客户端JavaScript与Node服务通信,以下是具体实现思路:

方案1:直接绑定局域网网卡监听(最常用,无需额外工具)
  • 核心逻辑:express的app.listen()支持传入第二个参数指定要监听的主机地址,填0.0.0.0就会监听设备上所有可用的网络接口,包括本地回环地址和局域网网卡地址,同一网络下的其他设备就能通过你的局域网IP+端口访问服务。
  • 正确的实现代码:
let express = require("express");
let cors = require('cors'); // 解决浏览器端JS跨域请求问题
let app = express();
// 开发阶段可以直接全局开启跨域允许
app.use(cors());

// 测试接口示例
app.get('/test', (req, res) => {
  res.send('同网通信成功');
})

// 3000为自定义端口,0.0.0.0表示监听所有网卡
app.listen(3000, '0.0.0.0', () => {
  console.log("服务运行在 http://0.0.0.0:3000");
  console.log("同网设备可通过你本机的局域网IP访问,例如 http://192.168.1.102:3000");
});
  • 前置配置要求:
    • 先查询你的设备在局域网内的IP地址:Windows系统在cmd执行ipconfig,Mac/Linux执行ifconfig或ip addr,找到WLAN/以太网对应的IPv4地址即为你的局域网IP
    • 打开系统防火墙对应端口(本例为3000)的入站规则,也可临时关闭防火墙做测试
    • 客户端设备需和Node服务运行设备连接到同一个路由器/WiFi网络
  • 客户端调用示例:浏览器端JS直接用局域网IP调用接口即可
// 把IP替换成你Node服务设备的实际局域网IP
fetch('http://192.168.1.102:3000/test')
  .then(res => res.text())
  .then(data => console.log(data))
方案2:本地网络服务发现(优化体验用)
  • 如果不想每次都手动输入IP,可以用mDNS协议实现本地域名访问,Node端安装mdns相关依赖后,可将服务映射为类似my-node-service.local的本地域名,同网下支持mDNS的设备(主流桌面、移动端系统均默认支持)直接用这个域名加端口就能访问,不需要记忆IP地址。
注意事项
  • 如果客户端是在HTTPS页面下运行的JS,调用HTTP协议的局域网服务会被浏览器的混合内容策略拦截,这种情况可以给本地服务生成自签SSL证书,用HTTPS协议启动服务即可。
  • 只有和Node服务在同一个二层局域网下的设备才能访问,外部网络的设备无法直接连接,符合你不需要托管网站的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:57:00