서버는 클라이언트의 요청(request)을 읽고 처리한 뒤, 응답(response)을 보냅니다.
클라이언트로부터 요청이 왔을 때, 어떤 작업을 수행할 지 이벤트 리스너를 미리 등록해두어야 합니다.
const http = require('http');
http.createServer((req, res) => {
//여기에 어떻게 응답할 지를 적습니다.
// 200: 성공적인 요청임
// {'Content-Type': 'text/html; charset=utf-8'}: 응답에 대한 정보를 보내는데 콘텐츠의 형식이 HTML임, 한글 표시: utf-8
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
// HTML 모양의 문자열을 보냄 or 버퍼 가능
res.write('<h1>Hello Node!</h1>');
res.end('<p>Hello Server!</p>');
})
.listen(8080, () => {
console.log('8080번 포트에서 서버 대기 중 입니다!');
});
<서버에 listening 이벤트 리스너 붙이기>
const http = require('http');
const server = 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>');
});
server.listen(8080);
server.on('listening', () => {
console.log('8080번 포트에 서 대기 중 입니다.');
});
server.on('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 Node!</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 Node!</h1>');
res.end('<p>Hello Server!</p>');
})
.listen(8081, () => {
console.log('8081번 포트에서 서버 대기 중 입니다!');
});
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>Node.js 웹 서버</title>
</head>
<body>
<h1>Node.js 웹 서버</h1>
<p>만들 준비되셨나요?</p>
</body>
</html>
const http = require('http');
const fs = require('fs').promises;
http.createServer(async (req, res) => {
try{
// data 변수에 버퍼를 저장하고 클라이언트에게 보내줍니다.
const data = await fs.readFile('./server2.html');
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
res.end(data);
} catch(err) {
console.error(err);
res.writeHead(500, {'Content-Type': 'text/html; charset=utf-8'});
res.end(err.message);
}
})
.listen(8081, () => {
console.log('8081번 포트에서 서버 대기 중 입니다!');
});
HTTP 상태 코드
res.writeHead에 첫 번째 인수로 상태 코드를 넣었는데, 브라우저는 서버에서 보내주는 상태 코드를 보고 요청이 성공했는지 실패했는지를 보여줌