如何得到Restify服务器的确切的IP地址在听?

考虑下面的代码为restAPI节点服务器。

var restify = require('restify'); var server = restify.createServer(); server.get('/echo/:name', function (req, res, next) { res.send({name: req.params.name}); next(); }); server.listen(8080, function () { console.log('%s listening at %s', server.name, server.url); }); 

用节点运行该服务器:

 $ node echo.js restify listening at http://0.0.0.0:8080 

它显示0.0.0.0这是错误的。

任何人都可以如何控制台login服务器的确切的IP时,它打开?

谢谢


更新 :执行下面的代码,我得到下面提到的输出,这又是很难,哪个IPselect?

  rest_server.listen(config.appPort, function () { var adrs = require('os').networkInterfaces(); console.log(adrs); console.log('%s listening at %s', rest_server.name, rest_server.url); }); 

输出:

 { 'Local Area Connection': [ { address: '192.168.3.60', family: 'IPv4', internal : false } ], 'Loopback Pseudo-Interface 1': [ { address: '::1', family: 'IPv6', internal: true }, { address: '127.0.0.1', family: 'IPv4', internal: true } ], 'isatap.TEST.ORG': [ { address: 'fe80::5efe:c0a8:33c', family: 'IPv6', internal: false } ] } restify listening at http://0.0.0.0:8080 

       

网上收集的解决方案 "如何得到Restify服务器的确切的IP地址在听?"

有相同的问题,并找出问题,基本上,你可以传递另一个参数。listen()函数,这应该是你的服务器的IP地址

 server.listen(port, [host], [backlog], [callback]) server.listen(port, YOUR IP ADDRESS, function(){ }); 

为了让你的服​​务器的IP地址在terminal上做“traceroute http://www.WEBSITE_URL.com”。

让我知道如果你还有一个问题。

感谢Mahdi

得到了一些解决scheme,如下所示。

总是欢迎任何改进。

 var osDetails = require('os'); function getDynamicIP(calbck) { var ip; try { var adrs = osDetails.networkInterfaces(); for (key in adrs) { if (adrs.hasOwnProperty(key)) { if (adrs[key][0].internal === false && adrs[key][0].family === 'IPv4') { ip = adrs[key][0].address; break; } } } } catch (e) { return calbck(e, null); } return calbck(null, ip); }