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. 데이터 교환
데이터 교환
: 메시지 주고받기 - 이벤트 기반
: 메시지 이벤트 정의
: 메시지 전송
: 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 |