2012-03-03 19 views
5

Aslında, Express JS'de vhost'un nasıl çalıştığını anlamaya çalışıyorum.Express Node.js'de vhost'u anlama

// -- inside index.js -- 
var EXPRESS = require('express'); 
var app = EXPRESS.createServer(); 

app.use(EXPRESS.vhost('dev.example.com', require('./dev').app)); 

app.listen(8080); 


// -- inside dev.js -- 
var EXPRESS = require('express'); 
var app = exports.app = EXPRESS.createServer(); 

app.get('/', function(req, res) 
{ 
    // Handle request... 
}); 

benim sorum, neden iki kez createServer() diyorsunuz edilir Şimdi: İşte (bu çıkarılmış unuttum) bir çalışma kod örneği değil mi? Bu neden çalışıyor? vhost, iki sunucuyu dahili olarak "birleştiriyor" mu?

cevap

10

Node.js, olay yönlendirmeli ve istek geldiğinde, olayı, http.Server numaralı telefondan yükseltilir.

function vhost(req, res, next){ 
    if (!req.headers.host) return next(); 
    var host = req.headers.host.split(':')[0]; 
    if (req.subdomains = regexp.exec(host)) { 
     req.subdomains = req.subdomains[0].split('.').slice(0, -1); 
     server.emit('request', req, res); 
    } else { 
     next(); 
    } 
    }; 
: Yani temelde, express.vhost (veya gerçekten connect.vhost) bir http.Server başka örneğinde request olay çağıran bir katman fonksiyonudur