SeSac (2021-08 ~ 2021-12)/Node

node 비동기

배워도끝이없네 2021. 11. 30. 21:07

웹소켓이라고 하는것은 소켓이 http위에서 동작하는 것이다.

 

웹소켓을 쓸수밖에 없는 이유 = > browser가 지원하기 때문에.

 

게임서버는 웹소켓이 아니라 소켓을 써야햇다 (성능이 중요해 C로 직접 구현했기 때문)

 

ws의 표준 프로토콜은

open

message

close

3가지밖에 없다.

 

node의 non- block i/o

 

함수형 프로그래밍은 기본적으로 non-block이다.

 

모든것이 async면 개발하기 정말 힘들기 때문에 그 선을 정했는데 그게 I/O이다.

 

lazy Instance라는 개념이 있다.

메모리 공간을 확보하는거는 부담스러운 일이다.

 

시간은 ROM에서 가져온다.

lazy instance는 예를들어 시간을 가져올때 분까지만 필요하다면 초마다가 아니라 매 분마다 실행이 되면 된다.

매초마다하면 new로 만들어지기 때문이다.

그렇다면 그 전에는 캐시를 해두는 방향으로 가면 이런것이 lazy instance이다.

 

한곳으로 모는 패턴을 facade패턴이라고 한다.

 

event DeMultiplexer는 V8에 있는데 I/O를 만나게되면 Event Queue에 I/O이벤트를 넣는다.

 

이렇게 넣어있는 요청을 Event loop가 감시해 call stack이 비어있으면 queue의 요청을 call stack으로 옮겨서 처리시킨다.

 

이벤트루프에서는 싱글스레드이기때문에 동기이다. 

 

노드는 EventEmitter를 가지고있다.

 

< callback boding rule >

 

callback 에서는 throw를할수없다.

그래서 err를 항상 1번째 인자로 받아야한다.

 

 

 

 

'SeSac (2021-08 ~ 2021-12) > Node' 카테고리의 다른 글

디자인패턴 2  (0) 2021.12.11
디자인패턴  (1) 2021.12.07
Node.js 비동기, callback 심화  (0) 2021.12.04
개요 (deno와 node의 차이)  (0) 2021.11.30