Node.js

3-1. 노드 HTTP 서버와 클라이언트

홍주누 2023. 4. 13. 11:02

I. 서버와 클라이언트

 

① 클라이언트가 서버로 요청(request) 을 보냄

서버는 요청을 처리

③ 처리 후 클라이언트로 응답(response) 을 보냄

 

 

 

II. HTTP 란?

 

Hyper Text Transfer Protocol 의 약자로, 클라이언트와 서버 사이에 이루어지는

요청/응답(request/response) 프로토콜, 하나의 통일된 규약이다.

예를 들면, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를

요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다.

이 정보가 모니터와 같은 출력 창치를 통해 사용자에게 나타나는 것이다.

 

 

 

III. 노드로 HTTP 서버 만들기

 

HTTP 요청에 응답하는 노드 서버

- createServer 로 요청 이벤트에 대기

- req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있음

// createServer.js

const http = require('http');

http.createServer((req, res) => {
  // 여기에 어떻게 응답할 지 적어줍니다.
});

 

 

 

IV. 8080 포트에 연결하기

 

1. res 메서드로 응답 보냄

- write 로 응답 내용을 적고

- end 로 응답 마무리(내용을 넣어도 됨)

 

2. listen(포트) 메서드로 특정 포트에 연결

const http = require('http');

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  res.write('<h1>Hello Node!</h1>');
  res.end('<p>Hello Server!</p>');
})
  .listen(8080, () => { // 서버 연결
    console.log('8080번 포트에서 서버 대기 중입니다!');
  });

 res도 스트림이다!!

 

✨ 또한, 서버를 실행하는 경우에는 아래와 같이 터미널 하나를 잡아먹고 있는 상태가 된다.

 

 

 

V. localhost와 포트

1. localhost 는 컴퓨터 내부 주소

- 외부에서 접근 불가능

 

2. 포트는 서버 내에서 프로세스를 구분하는 번호

- 기본적으로 http 서버는 80번 포트 사용(생략 가능, https는 443)

- 8080번 같은 포트는 생략 불가능

- 다른 포트로 데이터베이스나 다른 서버 동시에 연결 가능

 

3. 포트 종류

1. 0번 ~ 1023번 : 잘 알려진 포트 (well-known port)

2. 1024번 ~ 49151번 : 등록된 포트 (registered port)

3. 49152번 ~ 65535번 : 동적 포트 (dynamic port)

 

코드를 수정한 후에는 서버에 자동 반영되는 것이 아니라서 꼭 서버를 껐다가 켜야 한다. ( ctrl + c 누르면 서버 종료 )