728x90
반응형

간단하게 Node.js를 이용하여 서버를 만드는 방법입니다.

 

아래와 같이 간단하게 코드를 작성하여 js파일을 만듭니다. 저는 simple_server.js 라고 하겠습니다.

const http = require("http");

http
  .createServer((req, res) => {})
  .listen(8080, () => {
    console.log("8080포트에서 서버 연결 중...");
  });

 

만들고나서 http://localhost:8080 으로 접속하면 아래와 같은 화면이 나타납니다.

이번에는 위에서 작성한 js파일을 실행하여 봅니다. 실행은 아래와 같이 실행 할 수 있습니다.

C:\dev\nodejs\test> node simple_server.js

위처럼 실행하면 "8080포트에서 서버 연결 중..."이라는 메시지가 나오면 성공입니다. 이런 상태에서 다시한번  http://localhost:8080에 접속해 봅니다.

아까와는 다르게 로딩중으로 표시되지만 아무런 변화는 없습니다. 이는 서버가 실행되고 있으나 아직 아무것도 등록해주지 않았기 때문에 계속 로딩만 표시되는 것 입니다. 서버를 종료하기 위해서는 명령어를 입력했던 터미널에서 ctrl+c 를 입력하면 서버가 종료됩니다.

 

요청에 대한 응답

이번에는 페이지를 한번 만들어보도록 하겠습니다. 아까 simple_server.js 파일을 아래와 같이 수정하여 주십시오.

const http = require("http");

http
  .createServer((req, res) => {
    res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
    res.write("<h1> Node.js Server </h1>");
    res.end("<p>http page test ... </p>");
  })
  .listen(8080, () => {
    console.log("8080포트에서 서버 연결 중...");
  });

수정 후 다시한번 node 명령어를 실행하여 서버를 실행 후  http://localhost:8080에 접속해 봅니다. 그러면 아래와 같은 화면이 표시되는 것을 확인할 수 있습니다. 

간단히 코드에 대한 설명을 해보겠습니다. .createServer() 함수는 말 그대로 서버를 만드는 함수입니다. res.writeHead()는 응답에 대한 헤더 정보를 기록하는 함수이고 res.write()에는 클라이언트로 보낼 데이터를 넣어주면 됩니다. res.end()는 응답을 종료하는 메서드로 응답을 종료합니다.

createServer()함수 뒤에 .listen()을 붙여 클라이언트와 연결할 포트번호와 서버가 연결되면 실행할 콜백 함수를 넣습니다.

 

파일을 보내는 응답 코드

이번에는 html 문서를 응답으로 보내도록 하겠습니다. 일단 아래와 같이 html 을 만들어 줍니다. 저는 test.html 이라고 하겠습니다.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <title>test</title>
  </head>
  <body>
    Node.js Server Test html page
  </body>
</html>

그리고 js 파일을 아래와 같이 수정합니다.

const http = require("http");
const fs = require("fs").promises;

http
  .createServer(async (req, res) => {
    try {
      const f = await fs.readFile("./test.html");
      res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
      res.end(f);
    } catch (err) {
      console.error(err);
      res.writeHead(500, { "Content-Type": "text.html; charset=utf-8" });
      res.end(err.message);
    }
  })
  .listen(8080, () => {
    console.log("8080포트에서 서버 연결 중...");
  });

다시한번 서버를 실행하여 http://localhost:8080 에 접속하면 아래와 같은 페이지를 볼 수 있습니다.

728x90
반응형

+ Recent posts