-
#5-1. http 모듈을 이용한 웹 서버 만들기■ Front-End/- Node.js 2019. 6. 26. 02:38
http://www.yes24.com/Product/goods/32442876
이 책에서 웹 서버를 만드는 방법을 2가지로 나눠 설명하고 있다.
첫 번째는 http 모듈을 이용해 HTTP 프로토콜로 요청하는 내용과 응답을 처리하는 것이고,
두 번째는 express(익스프레스) 모듈을 이용해 좀 더 쉽고 빠르게 웹 서버를 만드는 것이다.
이번 포스팅에서는 http 모듈을 이용해서 웹 서버를 만들어보도록 하겠다.
http 모듈을 이용한 웹 서버의 workflow
(1) http 모듈의 createServer() 메서드를 이용해 웹 서버를 생성한다. 이 때, 서버의 listen 메서드를 호출해서 서버를 설정한 port 값으로 실행한 뒤, 대기한다. (자세한 내용은 아래 코드 참고)
- listen(port, [hostname or ip address], [backlog], [callback]) : 서버를 실행하여 대기시킨다.
- close([callback]) : 서버를 종료한다.
(2) 서버가 시작되면, 클라이언트는 서버에서 설정한 주소에 접속해 사이트를 요청한다.
(3)(4)(6) 클라이언트가 웹 서버에 요청할 때 발생하는 이벤트
- connection : 클라이언트가 서버에 접속하여 연결이 만들어질 때 발생하는 이벤트
- request : 클라이언트가 요청할 때 발생하는 이벤트
- close : 서버를 종료할 때 발생하는 이벤트
(5) 서버에서 클라이언트로 응답할 때 메서드
- writeHead(statusCode, [statusMessage], [headers]) : 응답으로 보낼 헤더 만들기
- write(chunck, [encoding], [callback]) : 응답 본문(body) 데이터를 만든다. 여러 번 호출 가능하다.
- end([data], [encoding], [callback]) : 클라이언트에 응답을 전송한다.
예제 코드
+) request 이벤트를 처리하는 콜백 함수에서 클라이언트에 응답을 보내는 방법 외에, 서버를 생성할 때 바로 응답을 보낼 수도 있다.
클라이언트에서 요청이 있을 때, 파일을 읽어서 응답하는 방법
(1) 'fs' 모듈의 readFile() 메서드 이용하기
앞서 배웠던 'fs' 모듈을 이용해서 파일을 읽어와 callback 함수에서 응답 객체에 넣어서 클라이언트에 보내면 된다.
(2) 파일을 스트림 객체로 읽어와 응답하기
pipe() 메서드를 이용하면, 파일을 스트림 객체로 읽어온 뒤, 응답객체와 연결하면 파일에 응답을 보낼 수 있다.
서버에서 다른 웹 사이트의 데이터를 가져와 응답하는 방법
(1) GET 방식
(2) POST 방식
'■ Front-End > - Node.js' 카테고리의 다른 글
gyp: No Xcode or CLT version detected! 에러 해결하기 (0) 2020.04.02 # 연습문제 1 (0) 2019.06.25 #4. 노드의 기본 기능 알아보기 (0) 2019.06.25 #2-3. 노드의 자바스크립트와 친해지기 (0) 2019.05.09 #1. 노드 간단하게 살펴보기 (0) 2019.05.01