Node.js :: 간단한 HTTP 웹 서버 만들기

Node.js는 다행히도 http모듈을 기본적으로 포함하고 있으며, 개발자는 몇 줄 안되는 코드로 매우 쉽게 간단한 기능을 하는 HTTP 웹 서버를 생성할 수 있습니다.

기본적인 HTTP 서버 생성하기

Node.js에서 HTTP 서버를 생성하기 위해 createServer 메서드를 호출하여 Server 객체만들고 생성된 서버를 4200번 포트로 listen합니다. 브라우저 주소창에 http://localhost:4200를 입력하면 "hello world!"가 출력됩니다.

놀랍게도, 이렇게 쉽게 간단한 기능을 하는 웹 서버를 만들었습니다.

Node.js 서버 분석하기

클라이언트가 생성된 서버(http://localhost:4200)로 접속하면 request 이벤트가 발생하며, Node.js는 등록된 이벤트 리스너에 request객체와 response객체를 전달합니다. request객체에는 클라이언트 요청에 대한 정보가 담겨있으며, 서버는 response객체를 이용하여 클라이언트에게 응답을 할 수 있습니다.


createServer 메서드에 피라미터로 넘겨준 익명 함수가 request 이벤트를 처리하기 위한 이벤트 리스너로 사용됩니다.


위 코드에서 생성된 서버는 요청이 들어올 시 http body에 "hello world!"를 적어 클라이언트에게 응답합니다.


createServer 메서드의 리턴 값인 Server객체는 실제로 HTTP 이벤트를 발생시키는 EventEmitter입니다. HTTP 이벤트에는 request 이벤트 외에도 다양한 이벤트가 존재하며 이를 처리하기 위한 이벤트 리스너를 등록할 수 있습니다.


request 이벤트를 명시적으로 처리하면서 클라이언트의 접속 이벤트인 connection 이벤트를 처리하기 위한 방법은 다음과 같습니다.

위 코드를 실행하고 서버에 접속해보면 "request arrived." 메시지가 두 번 출력되는데, 이는 코드가 잘못되거나 Node.js가 가지고 있는 버그가 아닌 브라우저가 favicon.ico을 위한 요청을 한번 더 보내기 때문입니다.



티스토리 툴바