javascript - nodejs如何获取本机在局域网中的IP
PHP中文网
PHP中文网 2017-04-10 16:00:22
0
2
466

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
左手右手慢动作

真实的项目可以在服务端启动的时候获取本地 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);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!