Hello, Android!

http서버 본문

Node

http서버

lwndnjs93 2021. 2. 3. 10:42

http 모듈을 사용하면 웹 브라우저의 요청을 처리할 수 있는 http 서버를 만들 수 있다

그 중에서도 createServer 함수를 사용하여 서버를 만들수 있다

매개변수로 콜백 함수를 받으며, 서버에 요청이 들어오면 콜백 함수가 실행된다

 

콜백함수의 매개변수로는 request, response를 받는다

request는 클라이언트의 요청에 대한 정보가 있고

response는 서버가 클라이언트에 보내주는 응답에 대한 정보가 있다

res에서 writeHead, write, end 세가지 함수를 사용하는데

- writeHead : HTTP 상태 코드, 응답에 대한 정보를 담고있으며, 이 부분을 헤더 라고 한다

- write : 응답의 본문이며 이번에는 HTML이지만, 이 외에 다른 형태의 데이터를 보낼수도 있고

여러번 보내는 것도 가능하다

- end : 응답을 종료하는 함수이며 보내고자 하는 데이터가 있다면 본문과 함께 보낸다 

 

마지막 부분의 listen에서는 포트와 콜백 함수를 받아 해당 포트에서 요청이 오면

listen의 콜백 함수가 실행된다

즉 http://localhost:8080 으로 들어가면 클라이언트에서 요청이 왔기때문에

listen의 콜백 함수가 호출되고 아무런 이상이 없으면

createServer에서 지정한 헤더, 본문을 받아 브라우저에 출력한다 

 

이와같이 리스너를 사용하는것도 가능하며 같은 chreateServer를 여러번 호출하여

동시에 여러개의 서버를 만드는 것도 가능하다

다만 동시에 여러 서버를 만드는 경우 서로 다른 포트를 할당하여

포트 충돌이 일어나지 않게 해야한다

 

위의 예제에서는 write 함수에서 직접 html 코드를 본문에 넣어 응답을 하였지만

다른 형태의 데이터를 보낼수도 있다 

즉 html 파일을 만들어놓은 뒤 readFile로 html파일을 읽어 버퍼로 보낼수도 있다

readFile에서 읽어온 버퍼 데이터를 그대로 end에 전달하여 응답을 종료하였다

catch에서는 파일 읽기에 실패한 상황을 대비하여 500 에러와 에러 메세지를 응답하도록 하였다

이와같이 에러가 발생하였다고 해도 적절한 응답을 클라이언트에 보내줘야 한다

에러가 발생했다고 해서 아무런 응답을 보내지 않는다면

클라이언트는 하염없이 기다리다 시간초과 처리를 하게된다

'Node' 카테고리의 다른 글

쿠키와 세션  (0) 2021.02.05
RESTful서버  (0) 2021.02.04
이벤트 처리  (0) 2021.02.02
버퍼와 스트림  (0) 2021.02.02
async / await  (0) 2021.02.01