2011년 6월 17일 금요일

[node.js] 기본적인 웹 서버 템플릿

node.js용 모듈로 express같은 걸출한 웹서버 프레임웍이 있긴 하지만 일단 기본적인건 알아두는게 좋을 것 같다. 그래서 메모.

공식 사이트 예제 소스에도 관련 내용이 있지만 POST 등으로 전해지는 데이터에 대한 건 없다. 그래서 그 부분을 추가한 것이다.
var http = require('http');
http.createServer(function(req, res) {
    var body = '';

    req.addListener('data', function(chunk) {
        body += chunk;
    });
    req.addListener('end', function() {
        res.setHeader('200', { 'Content-Type': 'text/html' });
        res.end('content');
    });
}).listen(8080);
서버에 접속이 들어오면 body라는 변수를 초기화 해서 전해지는 데이터를 받을 준비를 하고, 'data'라는 이벤트에 들어오는 chunk를 body에 덧붙인다. 아마도 chunked를 대비해서 이런 이벤트를 별도로 둔 것 같은데 클라이언트가 chunked data를 전송하지 않으면 그냥 한방에 들어오겠지. 마지막 'end'이벤트는 데이터 전송까지 완료된 상황.

결국 'end'이벤트에서 할 일을 하고 res(responseObject)에 데이터를 전달하면 되겠다.

responseObject의 메소드로 setHeader라는게 있는데, 모 사이트 예제에서는 sendHeader라는 걸 쓰고 있어서 혼란이 있었다. 하여간 setHeader가 맞는 메소드이고 첫 번째 인자(HTTP Status Code)는 숫자가 아닌 문자열 타입으로 넘겨줘야 한다. 숫자로 넘기면 에러가 뿅~

댓글 없음 :