javascript - nodejs如何获取本机在局域网中的IP
PHP中文网
PHP中文网 2017-04-10 16:00:22
[JavaScript讨论组]

下个星期向同学展示一个联机小游戏,在自己电脑上开个服务器让他们通过来连接访问进入游戏,但是因为ip不固定,每次都要改客户端文件里面连接服务器的url。所以能不能到时候告诉同学们我电脑ip地址后让他们直接在浏览器里面输入ip加端口访问进入游戏,但是希望客户端可以动态获取服务器ip,而不是写死的;说的可能不清楚,我用的是socket.io.js,客户端有个方法io.connect(url)所以就必须知道这个url。其实可以从浏览器地址栏获取,但是感觉这样不太好,有谁有比较好的方法吗,么么哒

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
ringa_lee

真实的项目可以在服务端启动的时候获取本地 ip,然后写入到静态文件(如 HTML 中的某个隐藏标签中),这样 JavaScript 可以动态获取。也可以通过调用 server 的接口来获取参数再交给 socket.io。

比如说很多前端项目用 gulp 做构建(当然任何 task runner 都可以),那么就可以在服务器端启动服务前运行 production 环境构建,由于构建是运行在 node 环境下的,可以获取到任何你想要的数据(只要够权限),命令行获取的参数可以传递给 gulp 脚本,然后 gulp build 时写入目标文件(比如利用 gulp-replace 等插件),之后浏览器加载页面时,JS 动态获取插入的信息即可。

因此,既然你有 node 的服务端,自然可以在伺服静态资源之前动态改写(或插入)其中的内容,这并不是什么困难的工作。

再简单一点,也可以服务端把必要的信息写入一个数据文件(比如 JSON),然后 JS 请求这个文件来获取也可以,其道理类似服务端扩展一个接口供客户端访问。

直接获取浏览器的 url 不是不可以,但当然不够好,因为很多时候 socket 服务未必和 web server 在一个 host 上。

伊谢尔伦
var os=require('os'),
    iptable={},
    ifaces=os.networkInterfaces();
for (var dev in ifaces) {
  ifaces[dev].forEach(function(details,alias){
    if (details.family=='IPv4') {
      iptable[dev+(alias?':'+alias:'')]=details.address;
    }
  });
}
console.log(iptable);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号