노드에는 웹서버를 만들 때 필요한 http모듈이 들어 있기 때문에 http프로토콜로 요청하는 내용과 응답을 모두 처리할 수 있습니다.

1. Node.JS를 이용한 웹서버 만들기

Node에 기본으로 내장되어 있는 http 모듈을 사용하면 웹 서버 기능을 담당하는 서버 객체를 만들 수 있습니다.

웹 서버는 일반적으로 웹브라우저라고 하는 클라이언트에서 http 프로토콜로 요청한 정보를 처리한 후 응답을 보내 주는 역할을 합니다. 서비스로 사용할 수 있는 포트는 총 6만 여개의 포트가 있으며 우리가 코드에서 사용할 포트는 7777번 입니다.

클라이언트가 웹 서버에 연결요철을 하였을 경우 서버는 응답페이지를 클라이언트에게 보내주게 되는데 이때 res객체의 writeHead(),write(),end()메소드를 사용하면 클라이언트로 응답을 보낼 수 있습니다.

웹 서버 객체 메소드

Method Description
listen(port, [hostname],[backlog],[callback]) 서버를 실행하여 대기시킵니다
close([callback]) 서버를 종료합니다

이벤트 처리 메소드

Method Description
connection 클라이언트가 접속하여 연결이 만들어질 때 발생하는 이벤트입니다.
request 클라이언트가 요청할 때 발생하는 이벤트입니다.
close 서버를 종료할 때 발생하는 이벤트입니다.

응답 객체의 주요메소드

Method Description
writeHead(statusCode,[statusMessage],[headers]) 응답으로 보낼 헤더를 만듭니다.
write(chunk,[encoding],[callback]) 응답 본문 데이터를 만듭니다.
end([data],[encoding],[callback]) 클라이언트로 응답을 전송합니다. 파라미터에 데이터가 들어 있다면 이 데이터를 포함시켜 응답을 전송합니다.

MIME Type

Method Description
text/plain 일반 텍스트 문서
text/html HTML 문서
text/css CSS 문서
text/xml XML 문서
image/jpeg, image/png jpeg파일, png파일
video/mpeg, audio/mp3 비디오 파일,오디오 파일
application/zip ZIP 압축 파일

Node.JS 웹서버 구현 예제

var http = require('http');

var server = http.createServer();

var host = '자신의 IP';
var port = 7777;

// 웹서버를 7777번 포트를 사용하여 바인딩합니다.
server.listen(port,host,function(){
	console.log('Web server is working on port %d',port);
	});

//클라이언트 연결 이벤트 처리
server.on('connection',function(socket){
	var addr = socket.address();
	console.log('client connected : %s %d',addr.address,addr.port);
	});

//클라이언트 요청 이벤트 처리
server.on('request',function(req,res){
	console.log('client request');
	// MIME Type
	res.writeHead(200,{"Content-Type":"text/html; charset=utf-8"});
	res.write("<!DOCTYPE html>");
	res.write("<html>");
	res.write("<head>");
	res.write("<title>response page</title>");
	res.write("</head>");
	res.write("<body>");
	res.write("<h1>Node.JS Response page</h1>");
	res.write("</bodyl>");
	res.write("</html>");
	res.end();
	});

server.on('close',function(){
	console.log('server is down');
	});

위의 예제는 Node를 통하여 웹서버를 실행시키고 응답페이지를 구현한 코드입니다. 실행후 http://자신의 IP:7777로 접속시 응답페이지를 확인 할 수 있습니다.

plain-text뿐만 아니라 타 MIME Type형식을 명시한다면 그림이나 음악 또한 응답페이지에 포함시킬수 있습니다.

위의 코드는 writeHead로 페이지의 MIME type을 명시하였고 응답페이지는 wirte메소드를 이용하여 html로 작성하였습니다.