http 모듈로 서버 만들기

http 모듈로 서버 만들기

HTTP 서버 만들기

서버와 클라이언트의 관계

클라이언트가 서버로 요청(request)을 보냄

서버는 요청을 처리

처리 후 클라이언트로 응답(response)을 보냄

클라이언트와 서버의 관계

http 요청에 응답하는 노드 서버

createServer로 요청 이벤트에 대기

req 객체는 요청에 관한 정보가, res 객체는 응답에 관한 정보가 담겨 있음

// server1.js const http = require('http'); const server = http.createServer((req, res) => { res.write('Hello Node!') res.write('Hello Server!') res.end('Hello ZeroCho') }) .listen(8080); server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중입니다.') }); server.on('error',(error) =>{ console.error(error); });

localhost는 컴퓨터 내부 주소

외부에서는 접근 불가능

포트는 서버 내에서 프로세스를 구분하는 번호

기본적으로 http 서버는 80번 포트 사용(생략가능, https는 443)

예) www.gilbut.com:80 -> www.github.com

다른 포트로 데이터베이스나 다른 서버 동시에 연결 가능

ip와 포트

fs로 HTML 읽어 제공하기

한 번에 여러 개의 서버 실행하기

createServer를 여러 번 호출하면 됨.

단, 두 서버의 포트를 다르게 지정해야 함.

같게 지정하면 EADDRINUSE 에러 발생

html 읽어서 전송하기

write와 end에 문자열을 넣는 것은 비효율적

fs 모듈로 html을 읽어서 전송하자

write가 버퍼도 전송 가능

// server2.html Node.js 웹서버 Node.js 웹 서버 만들 준비되셨나요?

// server2.js const http = require('http'); const fs = require('fs').promises; const server = http.createServer(async (req, res) => { try{ res.writeHead(200, {'content-Type': 'text/html; charset = utf-8' }) const data = await fs.readFile('./server2.html') res.end(data); }catch (error){ console.error(err); res.writeHead(200, {'content-Type': 'text/plain; charset = utf-8' }) res.end(err.message); } }) .listen(8080); server.on('listening', () => { console.log('8080번 포트에서 서버 대기 중입니다.') }); server.on('error',(error) =>{ console.error(error); });

node server2의 결과

https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-%EA%B5%90%EA%B3%BC%EC%84%9C/dashboard/

본글의 모든 내용은 위 강의를 토대로 작성됩니다

from http://jhg3410.tistory.com/21 by ccl(A) rewrite - 2021-10-28 23:00:47