웹소켓이라고 하는것은 소켓이 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 |