2012-03-03 2 views
5

vhost이 Express JS에서 실제로 작동하는 방식을 이해하려고합니다.Express Node.js의 가상 호스트 이해

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

내 질문은, 왜 우리가 두 번 createServer() 부르지되어 지금 : 여기에 (내가이에서 가져온 잊었) 작업 코드 샘플입니까? 왜 이것이 효과가 있습니까? vhost은 두 서버를 함께 "병합"합니까?

답변

10

Node.js는 이벤트 기반이며 요청이 들어 오면 이벤트는 http.Server에 발생합니다.

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(); 
    } 
    }; 
: 그러니까 기본적으로, express.vhost (또는 정말 connect.vhost을)를 http.Server의 다른 인스턴스에 request 이벤트를 발생 미들웨어 기능입니다