2012-09-24 26 views
7

Tamam, benim sunucuya yapılan talebin hostname almak için node.js oldukça kolay görünüyor:Nodejs Sunucu Hostadı

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

benim gerçek http hostname belirlemek için kolay bir yol var mı sunucu? Örneğin, sunucum http://localhost:3000 adresinde çalışıyor - bu adresi programlı olarak belirleyebilir miyim? Ben expressjs kullanıyorum.

cevap

12

Evet;

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

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

yazdırmalısınız

{ address: '0.0.0.0', family: 'IPv4', port: 3000 } 
da takip ederek os hostname retreive edebilirsiniz

;

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

Harika, yanıt ve yardım için teşekkürler! Terminalde "localhost host" yaparsam, "localhost adresi 127.0.0.1" yanıtını alırım, ancak server.address() "0.0.0.0" değerini üretir. Uyuşmazlık için bir sebep var mı? –

+1

Neden 0.0.0.0 için düzelir emin değilim, windows 0.0.0.0 ip adresi için bir hata tetiklediğinden bağlı bir tcp yuvasını dinlemek için address() yöntemini kullanmaya çalışırken bir sorun yaşadım 0.0.0.0 to 127.0.0.1 0.0.0.0 bir çok sebepten dolayı meydana gelebilir, bir makinedeki tüm arayüzler anlamına gelebilir, aynı zamanda bir ipin bir makine ile ilişkili olduğu ve diğer birkaç şeyle ilişkili olduğu anlamına da gelebilir iyi yaptığım kısa araştırmadan. –

+1

'localhost' benim için '{adres:' :: ', aile:' IPv6 ', port: 5000}' olarak geliyor. – ptf