1. 요청과 응답 이해하기

클라이언트는 서버로 요청을 보내고, 서버에서는 요청을 처리한 뒤 클라이언트에게 응답을 보냅니다.

따라서 서버에는 요청을 받는 부분과 응답을 보내는 부분이 있어야 합니다.

const http = require('http'); //웹 브라우저의 요청을 처리하기 위해 http모듈을 사용합니다.

http.createServer((request,response) => {
//서버가 어떻게 응답할지 적어주는 곳 입니다.
response.write('<h1>Hello Node!</h1>');
response.end('<p>Hello Server!</p>');
}).listen(8080, () => {
console.log('8080번 포트에서 서버 대기 중');
});

listen 메서드에는 콜백 함수 대신 서버에 listening 이벤트 리스너를 붙여도 됩니다.

const http = require('http'); //웹 브라우저의 요청을 처리하기 위해 http모듈을 사용합니다.

const server = http.createServer((req, res) => {
res.write('<h1>Hello Node!</h1>'); //클라이언트로 보낼 데이터입니다.
res.end('<p>Hello Server!</p>'); //클라이언트로 데이터를 보낸 후 응답을 종료 합니다.
})
server.listen(8080);
server.on('listening', () => {
console.log('8080번 포트에서 서버 대기 중입니다!');
});
server.on('error', (error) => {
console.error(error);
});

html 모양의 문자열 뿐만 아니라 버퍼를 보낼 수도 있습니다. 또한, 여러 번 호출해서 데이터를 여러 개 보낼 수도 있습니다.

 

코드가 성공적으로 이루어졌는지 확인해보려면 http://localhost:8080 혹은 http://127.0.0.1:8080에 접속하여 확인합니다.

 

출력결과

 

 

*localhost와 포트란?

localhost(127.0.0.1)는 현재 컴퓨터의 내부 주소를 가리킵니다. 자신의 컴퓨터에서만 접근할 수 있어서 서버 개발 시 테스트용으로 많이 사용합니다.

 

포트는 서버 내에서 프로세스를 구분하는 번호입니다. 서버는 프로세스에 포트를 다르게 할당하여 들어오는 요청을 구분합니다. 대표적으로 21(FTP), 80(HTTP), 443(HTTPS), 3306(MYSQL)이 있다. 포트 번호는 IP주소 뒤에 콜론(:)과 함께 붙여 사용합니다.

 

*포트 충돌

사용 중인 포트를 사용할 경우 Error:listen EADDRINUSE :::포트 번호 같은 에러가 발생합니다. 이런 경우 그 서비스를 종료하거나, 노드의 포트를 다른 번호로 바꾸면 됩니다.

+ Recent posts