웹 소켓 WS(Web Socket)
 - 서버와 클라이언트가 서로 socket connection을 유지해서 언제나 실시간 양방향 데이터 전송이 가능하게 해주는 기술
 - 노드에서는 ws, socket.io같은 패키지를 통해서 구현 가능
 
WebSocket vs Socekt.io
- WebSocket은 자바스크립트 Socekt.io은 jquery와 같은 관계라고 예를 들수 있음

WebSocket
 - 양방향 소통을 위한 프로토콜
 - HTML5 웹 표준 기술(웹소켓은 HTML5 모듈이므로 클라이언트 쪽에서는 모듈 설치 필요 없음)
 - 매우 빠르게 동작하고 작은 데이터를 이용해 통신함
 - 이벤트를 듣고 보내는 것만 가능
 
Socket.io
  - 웹소켓 기술을 활용하는 라이브러리
  - 웹소켓을 지원하지 않는 브라우저에도 사용가능하게 해준다.
  - 표준 기술이 아닌 라이브러리임
  - 소켓 연결 실패시 fallback을 통해 다른 방식으로 알아서 해당 클라이언트에 연결을 시도함
  - 특정 클라이언트에게만 데이터를 전송하는 브로드 캐스팅 가능(브로드 캐스팅이 가능하기 때문에 특정 사용자를 세밀하게 관리할때 유용함)
  

Socket.io 이벤트 통신
  - 클라이언트에서 발생하는 이벤트를 개발자가 임의로 설정 가능

// 해당 이벤트를 받고 콜백함수를 실행
socket.on('받을 이벤트 명', (msg) => {
})
 
// 이벤트 명을 지정하고 메세지를 보낸다.
socket.emit('전송할 이벤트 명', msg)

'Node' 카테고리의 다른 글

[Node] 노드 정리  (0) 2023.04.07
[Node] NPM 정리  (0) 2023.04.07

express = Node.js 웹 프레임워크

node.js
- node.js의 모든 api는 비동기 방식으로 동작하여 non-blocking I/O가 가능하다.
- 단일 스레드 이벤트 루프 모델을 사용하여 가벼운 환경에서도 높은 Request 처리 성능을 가지고 있다.
- 데이터를 실시간으로 처리하여 I/O가 자주 발생하는 SPA(Single page Application)에 적합하다.
- 서버 사이드 스크립트 언어이다.

node.js 장단점
장점)
1. 멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용
2. I/O 작업이 많은 서버에 적합(non blocking 방식을 사용하기 때문)
단점)
1. 싱글 스레드라서 CPU 코어를 하나만 사용
2. CPU 작업이 많은 서버에는 부적합(non blocking 방식을 사용하기 때문)

클라이언트 사이드 : 클라이언트(사용자) 측에서 처리하는 것 대표적으로(javascript)
서버 사이드 : 서버(제공자) 측에서 즉시 처리하는 것 대표적으로(java, node.js, python)

데이터를 서버 사이드에서 처리시
장점 
  - 클라이언트(사용자)의 컴퓨터 처리부담이 줄어든다
  - 데이터 위조의 가능성을 줄여준다(서버쪽에서 중요한 데이터를 관리하기 때문에).
단점 
  - 서버가 처리해야할 데이터가 많아져서 서버 비용이 늘어난다.

데이터를 클라이언트 사이드에서 처리시
장점 
  - 서버 비용이 줄어든다.
단점 
  - 클라이언트 쪽에서 보내준 데이터를 서버 쪽에서 진위성을 파악하기 힘들기 때문에 중요한 데이터를 클라이언트 쪽에서 처리하기 힘듬

이벤트가 발생할 때 미리 만들어둔 작업을 수행하는 방식
1. 이벤트 리스너에 콜백 함수 등록
2. 이벤트 발생
3. 등록된 콜백 함수 호출

non blocking I/O
- 오래 걸리는 함수를 백그라운드로 보내고 빨리 끝나는 코드를 먼저 실행하는 방식(뒤로 밀린 함수들은 다시 태스트 큐를 거쳐 호출 스택으로 올라온다.)
- I/O작업을 진행하는 동안 유저 프로세스의 작업을 중단시키지 않는다.
blocking I/O
- 요청이 들어온 함수를 차례차례 순서대로 실행하는 방식
- I/O작업이 진행되는 동안 유저 프로세스의 작업을 중단한채 대기한다.

'Node' 카테고리의 다른 글

[Node] 웹소켓 정리  (0) 2023.04.07
[Node] NPM 정리  (0) 2023.04.07

NPM(Node Package Manager)
 - package.json에 적혀있는 모든 의존 패키지를 설치할때는 'npm install' 명령어를 사용한다.
 - npm은 package.json 파일을 통해서 프로젝트 정보, 패키지의 의존성(dependency)를 관리한다.
 - package.json은 java의 maven에서 pom.xml과 비슷한 역할

의존성(dependency) 관리란?
 - 해당 프로젝트가 동작하는데 필요한 npm 패키지들

package-lock.json : package.json의 dependecies에서 작성한 내용을 상세히 적어놓은 것
 
패키지 설치하는 법
npm install <package>

패키지 지역 설치 /전역 설치
npm install <package> : 지역 설치
npm install -g <package> : 전역 설치
  - 전역 설치 장소 : c:\Users\%USERNAME%\AppData\Roaming\npm\node_modules
  - 전역 설치시 package.json에는 기록이 안된다.

npm install 모듈명 --save : package.json의 dependecies에 자동으로 추가됌(npm 5버전 이전에서는 package.json에 추가되지 않고 node_modules에만 설치함)
node-gyp : node.js에서 네이티브 기능(C, C++에서 개발된 모든 모듈)을 사용할수있게 해주는 모듈

'Node' 카테고리의 다른 글

[Node] 웹소켓 정리  (0) 2023.04.07
[Node] 노드 정리  (0) 2023.04.07

+ Recent posts