请考虑以下代码用于rest API节点服务器。
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
错误。
任何人都可以告诉我如何在打开服务器时登录服务器的确切IP?
由于
<小时/> 的更新: 在执行下面的代码时,我得到了下面提到的输出,这又变得困难,要选哪个IP?
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
答案 0 :(得分:5)
您可以将实际地址设置为listen方法,请参阅
http://mcavage.github.io/node-restify/#Server-API和http://nodejs.org/docs/latest/api/net.html#net_server_listen_path_callback
server.address()
可能会返回服务器绑定的地址:
http://nodejs.org/docs/latest/api/net.html#net_server_address
答案 1 :(得分:5)
有同样的问题并找出问题,基本上你可以将另一个参数传递给.listen()函数,那应该是你的服务器IP地址
server.listen(port, [host], [backlog], [callback])
server.listen(port, YOUR IP ADDRESS, function(){ });
为了获得服务器的IP地址,只需在终端上执行“traceroute www.WEBSITE_URL.com”。
如果您还有问题,请告诉我。
感谢 马赫迪
答案 2 :(得分:0)
得到一些解决方案,如下所示。
总是欢迎任何改进。
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);
}