// const { log } = require("console");
const http = require("http");
let count = 0;
const server = http.createServer((req, res) => {
log(count);
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.write("Hello\n");
setTimeout(() => {
res.end("Node.js");
}, 2000);
});
function log(count) {
console.log((count += 1));
}
server.listen(8000, () => console.log("Hello Node.js"));
const http = require("http");
require() 함수는 모듈을 읽어오는 함수이다. http모듈을 불러와 http 변수에 할당한다. 모듈명과 변수명은 다르게 해도 상관없지만 보통 위와 같이 이름 짓는 것이 관행이다.
const server = http.createServer(callback);
createServer() 는 서버 인스턴스를 만드는 함수이다. 인수로 callback 함수를 받는다. 콜백 함수에서는 http 서버로 요청이 들어오면 해당 요청을 처리할 함수를 설정한다. callback함수는 요청 처리에 사용할 요청(req), 응답(res) 객체를 인수로 받는다.
log(count);
전역 변수 count를 사용해 요청에 대한 log를 간단하게 남긴다.
res.statusCode = 200;
요청에 대한 상태코드를 200으로 설정한다.
주요상태코드표 참조:
https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
res.setHeader("Content-Type", "text/plain");
http는 req/res에 대한 보가 정보를 설정할 수 있다. 부가 정보는 header에 설정하게 되는데, 여기서는 콘텐츠 타입을 'text/plain'으로 설정했다. 콘텐츠 타입은 해당 콘텐츠가 어떤 형태의 데이터인지 나타낸다.
text/plain: 텍스트를 평문으로 해석하겠다.
text/html: 텍스트를 html으로 해석하겠다.
.
.
이외에도 Accept, Accept-Charset, User-Agent, Referer....
res.write("Hello\n");
응답으로 "Hello\n"
setTimeout(() => {res.end("Node.js")}, 2000);
setTimeout()은 콜백 함수와 숫자를 인수로 받는다. 해당 시간이 지나면 콜백 함수를 실행한다. 위 코드에서는 2초후 Node.js를 응답으로 주고 http 커넥션을 끝내는 동작을 한다. setTimeout(), setInterval()같은 함수는 타이머를 사용한다. 타이머는 libuv에서 제공하는 기능을 사용하며 이벤트 루프에서 콜 스택을 모니터링하면서 실행할 시점을 정한다.
server.listen(8000, () => console.log("Hello Node.js"));
사용할 포트 번호를 8000번으로 지정한다. IP를 생략했기때문에 localhost혹은 127.0.0.1로 서버에 접근할 수 있다.
'개발일지 > 기타' 카테고리의 다른 글
aws storage, database (2) | 2024.01.04 |
---|---|
aws general immersion day (2) | 2024.01.04 |
Git - Divergent branches (0) | 2023.12.09 |
웹서버만들기(1) (4) | 2023.11.17 |
복잡도(BigO,시간,공간) (0) | 2023.10.21 |