1. 실시간 웹서비스와 socket.io

실시간 서비스 작성하기

: HTTP의 한계

: socket

: 데스크탑 애플리케이션 - 가능

: 모바일 애플리케이션 - 가능

: 웹 브라우저 - 불가능

웹브라우저에서 실시간 웹 서비스 사용하기

: ajax, polling, long poling, 웹 소켓...

: 다양한 시도가 있었지만, 다양한 웹 브라우저 때문에 한계가 존재.

: 여러 기술을 한번에 사용해야 된다는 어려움

실시간 서비스 작성하기

: socket.io : 호환되는 기술을 자동 선택

: npm install socket.io

socket.io 서버와 클라이언트

: 서버

: HTTP 서버

: socket.io 서버

: 클라이언트 

: HTTP 클라이언트, 모바일...

: socket.io 클라이언트

: 서비스 시작

: HTTP 서버 준비

: socket.io 서버 준비

: socket.io 클라이언트 요청 - HTML로 응답

: socket.io 초기화 및 서버 접속

: 연결이 끊어 졌을 경우 자동 재접속 시도

2. 데이터 교환

데이터 교환

: TCP 방법과의 차이이다. 스트림이 아니라, 이벤트를 이용하여 처리한다!

: 메시지 주고받기 - 이벤트 기반

: 메시지 이벤트 정의

: 메시지 전송

: socket.emit('EVENT', data)

: 이벤트 수신

: socket.on('EVENT',function(data){});

이벤트로 메시지 주고 받기

: 서버에 이벤트 등록

: 클라이언트 이벤트 등록

: 서버에서 이벤트 발생

: 소켓 하나에 이벤트 발생

: 연결된 모든 소켓에 이벤트 발생

3. 네임스페이스와 룸

: socket.io 기본연결

: 소켓과 1:1 연결

: 모든 소켓과 통신

: 1:N 통신

: 개별 소켓과 1:1통신 N번 반복

: 네임스페이스

: 룸

: 네임스페이스로 socket.io 연결 구분

: 같은 네임 스페이스에서만 메시지 주고 받음

: 기본 네임 스페이스 : /

: 커스텀 네임 스페이스 : /NAME-SPACE

: var system = require('socket.io')(server).of('/system')

: 네임스페이스 내 채널

: 같은 룸에서만 데이터 교환

: 룸에 입장, 여러 룸에 입장 가능

: 룸에서 떠나기

: 서버쪽에서 클라이언트를 룸에 입장 시키고 퇴장시킬 수 있음.


'프로그래밍 > Nodejs' 카테고리의 다른 글

passport를 통한 인증  (0) 2017.04.28
인증  (0) 2017.04.27
소켓을 이용한 실시간 서비스  (0) 2017.04.27
Nodejs와 MongoDB  (0) 2017.04.27
Node.js와 MySQL  (0) 2017.04.27

+ Recent posts