2012-09-24 23 views
7

Ok, quindi sembra abbastanza facile in Node.js per ottenere il nome host della richiesta fatta al mio server:Nodejs Server host

app.get('/', function(req,res){ 
    console.log(req.headers.host); 
}); 

C'è un modo semplice per determinare il nome host del mio attuale http server? Ad esempio, il mio server è in esecuzione all'indirizzo http://localhost:3000 - posso determinare questo indirizzo in modo programmatico? Sto usando expressjs.

risposta

12

Sì, è possibile utilizzare il;

var express = require('express'), 
    app = express(), 
    server = require('http').createServer(app); 

server.listen(3000, function(err) { 
     console.log(err, server.address()); 
}); 

dovrebbe stampare

{ address: '0.0.0.0', family: 'IPv4', port: 3000 } 

si può anche retreive il nome host per il sistema operativo dal seguente;

require('os').hostname(); 
+0

Grande, grazie per la risposta e l'aiuto! Se faccio "host localhost" nel terminale ricevo la risposta "localhost ha indirizzo 127.0.0.1", ma server.address() produce "0.0.0.0". C'è una ragione per la discrepanza? –

+1

Non sono sicuro del motivo per cui si risolve in 0.0.0.0, ho avuto un problema durante il tentativo di utilizzare il metodo address() per ascoltare un socket tcp associato poiché Windows generava un errore per l'indirizzo IP 0.0.0.0, avevo mappare da 0.0.0.0 a 127.0.0.1 0.0.0.0 può verificarsi per molte ragioni, può significare tutte le interfacce su una macchina, può anche significare che nessun ip è associato ad una macchina così come alcune altre cose come bene dalla breve ricerca che ho fatto su di esso. –

+1

'localhost' per me viene come' {indirizzo: '::', famiglia: 'IPv6', porta: 5000} '. – ptf