일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- autocomplate
- 네이버페이사기
- 특수문자
- 세부
- 해외여행
- 정직하게사세요
- webpack.config.js
- 자동완성
- 마사지
- 스쿠버다이빙
- REACT
- Hooks
- 구분
- 여행
- JavaScript
- 중고나라
- 정규식
- 삼성무선청소기제트
- 중고거래사기
- ES6
- 사기
- js
- Webpack
- 유효성검사
- 맛사지
- 스노쿨링
- plugin
- 막탄
- 중고나라사기
- Today
- Total
Ryu.log
[ NodeJS 04 ] 이벤트 기반, 싱글쓰레드, 논블러킹I/O 본문
이전에 이벤트 루프를 알아야만 이벤트 기반, 싱글쓰레드, 논블러킹 I/O 에 대해 이해할 수 있다고 설명했다.
3강 에서 이벤트 루프를 통해서 함수의 호출을 인위적으로 조절 가능한 것을 알았으며,
2강 에서는 Node프로그램 hello Node도 실행시켜 보았다.
그렇다면 실제 서버로 이용하려면 어떻게 해야 할까?
어떻게 해야 Node가 서버의 역활을 할 수 있을까?
먼저 서버에 대해 알아보자
간단히 설명하면 요청을 받아서 응답을 하는것을 서버라 한다.
요청을 보내는 주체는 클라이언트(사용자)라 한다.
클라이언트는 서버에 요청을하고 서버는 그에대해 응답을 한다.
또한 서버가 클라이언트가 될 수도있다. 서버가 서버에게 요청을 보내는것이다.
요청의 특징은 언제올지 모른다는 것이다. ( 유저가 서버로 보내는 모든 요청 방문, 댓글등록 등등.. )
언제 요청이 올지모르는 서버는 계속 기다리고 있어야 한다.
01. 이벤트 기반
요청이 언제올지 모르는 서버는, 계속하여 대기한다.
아무런 코드 없이 기다릴 수는 없고 이벤트 리스너라는 것을 이용한다.
이벤트 리스너는 말 그대로 해당 이벤트에 대해 대기중인 것!
항상 리스닝 중 이다. 해당 이벤트가 발생했을 때 등록했던 이벤트 리스너가 실행된다.
예를 들어서 이벤트 리스너 에 "유저가 방문 하면 HTML 줘" 라는 명령(콜백 함수로 구성 되어있음)이 있다고 치자,
호출스택과 테스크 큐 에 다른 실행문이 없을 때, 클라이언트의 방문 이벤트가 발생되면
이벤트 리스너 에 등록된 "유저가 방문 하면 HTML 줘" 라는 명령은 테스크 큐 로 들어가고 (콜백 함수는 테스크 큐로 들어간다.)
테스크 큐 에 들어간 "유저가 방문 하면 HTML 줘" 라는 명령은 곧장 호출 스택으로 이동하여 클라이언트에게 HTML을 전달하여
사이트를 보여주게 된다.
이렇게 이벤트 리스너를 통해 응답하는것을 이벤트 기반 이라한다.
02. 논블러킹 I/O
function run() {
console.log('3초 후 실행');
}
console.log('시작');
setTimeout(run, 3000);
console.log('끝');
03. 싱글스레드
'Prev-content' 카테고리의 다른 글
[ NodeJS 05 ] 프로미스(Promise) 이해하기 (0) | 2018.07.25 |
---|---|
[ NodeJS 05 ] 콜백과 프로미스(Promise) 비교 (0) | 2018.07.24 |
[ NodeJS 03 ] 호출 스택과 이벤트루프 (0) | 2018.07.10 |
[ Riot Games API 활용 전적 검색 App 08] - In Game 정보 리스트 디테일 구현 (0) | 2018.07.10 |
[ Riot Games API 활용 전적 검색 App 07] - In Game 정보 리스트구현 (0) | 2018.07.10 |