2013-05-17 8 views
5

Rozważmy następujący kod dla serwera węzłów API odpoczynku.Jak uzyskać dokładny adres IP Restify server na listen?

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); 
}); 

Running Up That serwer z węzła:

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

To pokazuje 0.0.0.0 co jest źle.

Czy ktokolwiek, kto jest konsolą, może logować dokładny adres IP serwera, gdy jest włączony?

Dzięki


Aktualizuj: Na wykonywania następujący kod jestem coraz niżej wymienionych wyjścia, czyli znowu utrudnia, które IP wybrał?

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); 
    }); 

wyjściowa:

{ '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

W tym przypadku należy wybrać '192.168.3.60' ponieważ nie jest wewnętrzna * i * IPv4. – robertklep

Odpowiedz

2

Można ustawić prawdziwy adres do metody Słuchaj, patrz

http://mcavage.github.io/node-restify/#Server-API i http://nodejs.org/docs/latest/api/net.html#net_server_listen_path_callback

server.address() może zwrócić adres serwer był związany:

http://nodejs.org/docs/latest/api/net.html#net_server_address

+0

'server.address()' zwraca ten sam 0.0.0.0 .. Jakąkolwiek wskazówkę? '{adres: '0.0.0.0', rodzina: 'IPv4', port: 8080}' –

+0

i: require ('os'). getNetworkInterfaces(); – krampstudio

+0

Zaktualizowałem moje pytanie na podstawie danych wejściowych. Ale wciąż nie jest w stanie uzyskać dokładnie tego, co jest wymagane :( –

0

Masz rozwiązanie, które wygląda następująco.

Wszelkie poprawki na tej samej stronie są zawsze mile widziane.

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); 
} 
5

miał ten sam problem i zorientowali się problem, w zasadzie można przekazać kolejny parametr do funkcji .listen() i które powinny być Twój adres IP serwera

server.listen(port, [host], [backlog], [callback]) 


server.listen(port, YOUR IP ADDRESS, function(){ }); 

aby uzyskać swój adres IP serwera wystarczy wykonać "traceroute www.WEBSITE_URL.com" w terminalu.

daj mi znać, jeśli nadal masz problem.

dzięki Mahdi

Powiązane problemy