본문 바로가기

Programming/Node.js

5. http 모듈로 서버 만들기 (1) - 요청과 응답 [3]

node js logo image

 

 

 

앞선 아티클에서 createServer( ) 메서드를 사용하면서 listen( ) 메서드를 이용해 포트 번호를 열고, 여기에 콜백 함수를 선언했었습니다. 

 

const http = require('http');

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

/* 출력
8080번 포트 서버 대기 중
*/

 

 

 

이번에는 여기에서 listen 메서드에 콜백 함수를 넣지 않고, 포트 번호만 정의하겠습니다. 그리고 서버에 'listening'이라는 이벤트를 별도로 정의해 콜백 함수를 정의하겠습니다. 더불어 error 이벤트 리스너도 추가해서 정의합니다. 

 

const { error } = require('console');
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8'});
    res.write('<h1>Hello World</h1>');
    res.end('<p>Hello Server</p>');
});
server.listen(8080);

server.on('listening', () => {
    console.log('8080번 포트 서버 대기 중');
});

server.on('error', (error) => {
    console.error(error);
});

 

실행 결과는 동일합니다.

 

 

 

더불어 (이론적인 부분이라 실제로 적용하는 경우는 드물지만) 포트 번호를 구분하여 한 번에 여러 서버를 실행하는 것도 가능합니다. 

 

 

const http = require('http');

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


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

/* 출력
8080번 포트 서버 대기 중
8081번 포트 서버 대기 중
*/

 

이때 localhost:8080, localhost:8081을 각각 주소창에 입력해 실행이 가능합니다. 참고로 이런 경우에 포트 번호가 같다면 EADDRINUSE 에러가 발생합니다.