LeeWang_31
이왕31
LeeWang_31
전체 방문자
오늘
어제
  • 분류 전체보기 (234)
    • 프로젝트 (2)
      • 사이드 프로젝트 (2)
      • Codestates_pre_project (0)
    • 프론트엔드 (169)
      • Html (19)
      • CSS (18)
      • JavaScript (29)
      • Codestates (76)
      • 코딩노트 (27)
    • 백엔드 (10)
      • node (10)
    • 구르는 돌 🌑 (16)
      • Codestates (11)
      • 생각 (4)
      • 공부 흔적 (1)
    • 정보 (18)
      • 오류노트 (2)
      • 인텔리제이 정보 (9)
      • 깃 정보 (3)
      • 기타 정보 (4)
      • 안드로이드스튜디오 정보 (0)
    • CS (7)
      • 이론공부 (7)
    • App (6)
      • Android (3)
      • Kotlin (3)
    • 컴퓨터 수학 (5)
      • 암호론 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • DP
  • 코딩애플
  • figjam
  • 생활코딩
  • codestate
  • 사용자친화웹
  • 안드로이드스튜디오범블비
  • 2609
  • 백준
  • linux
  • 코플릿
  • 알고리즘
  • TODOlist
  • 안드로이드스튜디오파이어베이스
  • 사이드프로젝트
  • linuix 코드스테이츠
  • html
  • 파이어베이스연동
  • 코드스테이츠
  • 번들링
  • React
  • 웹팩
  • UI/UX
  • ubuntu
  • JavaScript
  • css
  • 2693
  • 자바스크립트
  • 사용자 친화 웹
  • 1292

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
LeeWang_31

이왕31

[Node] HTTP서버 만들기
백엔드/node

[Node] HTTP서버 만들기

2022. 11. 27. 17:47

요청과 응답

클라이언트가 서버로 요청을 보냅니다

서버는 요청을 처리하고 클라이언트로 응답을 보냅니다.

 

여기서 요청(request)은 req로, 응답(response)은 res로 쓰는 경우가 많습니다.

 

HTTP 서버 만들기

서버 생성

server.js라는 파일을 생성합니다.

require을 사용하여 http를 받아옵니다.

const http = require('http');

createServer을 사용하여 웹 서버 객체를 만듭니다.

http.createServer((req, res) => {
	// 작업은 여기서 진행 됩니다...
})

createServer은 첫째 인자로 req요청, 두 번째 인자로 res응답을 받습니다.

 

포트 정하기

HTTP 요청을 처리하려면 listen 메서드가 server객체에 호출되어야 합니다.

server.listen(port, hostname, backlog, callback);

다음 구조를 가질 수 있는데, 대부분 블로그 글에서는 listen안에 port만 작성 하는 경우가 많아 보인다.

저는 listen에 8080 포트를 작성하고 콜백 함수에 log를 작성하여 서버가 잘 열어졌는지 확인해보려 한다.

const http = require('http')
http.createServer((req, res) => {
    // 작업은 여기서 진행 됩니다...
}).listen(8080, () => {
    console.log('8080번 포트에서 서버 대기중입니다.')
})

간단한 HTTP 작성

creatServer에 '작업은 여기서 진행됩니다...'부분에 간단한 http를 작성해 보려고 합니다.

write와 end를 사용하여 응답을 전송합니다.

const http = require('http')
http.createServer((req, res) => {
    res.write(`<h1>hello Server</h1>`)
    res.write('<p>hello World</p>')
    res.end('<p>hello Node</p>')
    // res.end('<h1>hello Server</h1><p>hello World</p><p>hello Node</p>') ->같은 결과를 보여줍니다.
}).listen(8080, () => {
    console.log('8080번 포트에서 서버 대기중입니다.')
})

locallhost:8080 접속

터미널에 해당 파일을 실행합니다.

저는 server1이라는 파일이었기 때문에 node server1.js로 실행했습니다.

터미널에 8080번 포트에서 서버 대기 중입니다.라는 이전에 적용한 log가 정상적으로 보입니다.

 

http://localhost:8080/ 다음으로 접속하면 화면이 정상적으로 출력됩니다.

만약 js파일에서 수정이 있었을 경우 ctrl+C를 눌러 서버를 껐다가 다시 node server.js로 실행해 줘야 합니다.

예외 처리

HTTP로 서버를 여는 것 또한 비동기이기 때문에 예외 처리를 진행해줘야 한다

http, createServer을 server라는 변수에 넣고 server.on을 사용하여 서버가 켜지는 정상적으로 작동되는 경우 그렇지 않은 경우를 나눠서 진행해준다.

const http = require('http')
const server = http.createServer((req, res) => {
    res.write(`<h1>hello Server</h1>`)
    res.write('<p>hello World</p>')
    res.end('<p>hello Node</p>')
}).listen(8080)
server.on('listening',()=>{
    // 서버 정상 실행
    console.log('8080번 포트에서 서버 대기중입니다.')
})
server.on('error',(err)=>{
    // error 발생
    console.log(err)
})

listen에 있던 콜백을 정상적으로 작동된 경우에 넘겨서 조금 더 정확하게 파악을 할 수 있게 만들었다.


참고

  • https://www.inflearn.com/course/%EB%85%B8%EB%93%9C-%EA%B5%90%EA%B3%BC%EC%84%9C/dashboard
  • https://nodejs.org/ko/docs/guides/anatomy-of-an-http-transaction/
  • https://www.w3schools.com/nodejs/met_server_listen.asp#gsc.tab=0
저작자표시 (새창열림)

'백엔드 > node' 카테고리의 다른 글

[Node.js/MongoDB] Html파일 전송하기  (0) 2022.12.14
[Node.js/MongoDB] nodemon  (0) 2022.12.14
[Node.js/MongoDB] Express와 get으로 읽기  (0) 2022.12.14
[Node.js/MongoDB] Node.j란  (1) 2022.12.14
[Node] fs로 HTML 읽기  (0) 2022.11.27
    '백엔드/node' 카테고리의 다른 글
    • [Node.js/MongoDB] nodemon
    • [Node.js/MongoDB] Express와 get으로 읽기
    • [Node.js/MongoDB] Node.j란
    • [Node] fs로 HTML 읽기
    LeeWang_31
    LeeWang_31
    이왕 할 거면 기분 좋게

    티스토리툴바