WebSocket 개념
WebSocket 개념
WebSocket 이란?
: 서버 - 클라이언트 간의 효율적인 양방향 통신을 실현하기 위한 통신 프로토콜
HTTP의 단점을 보완하기 위해 등장함.
하나의 HTTP접속으로 양방향 메시지를 자유롭게 주고받을 수 있다
장점
: 기존 HTTP는 Client가 요청을 보내지 않아도 Server가 데이터를 보내주는 기능의 구현에 있어서
많은 고민이 있었음 -> HTTP의 근본적인 메커니즘 탓으로 인한 한계 (Request/Response)
HTTP에 지나치게 많은 헤더(kByte)를 가지고있지만,
WebSocket은 Byte단위까지 압축할 수 있어 네트워크 과부화 (오버헤드)를 줄일 수 있다.
* HTTP를 완전히 대체하는 것이 아니라 HTTP통신이 적합하지 않은 메시징 등의 지연시간이 적고
트래픽이 높은 환경에서 유용하게 사용
작동원리
WebSocket 프로토콜은 접속 확립에(HandShake) HTTP를 사용하지만 그 후 통신은 독자적으로 이뤄짐
WebSocket API
: W3C에서 관리함. 4개의 이벤트 핸들러와 2개의 함수로 구성됨.
onopen : 웹소켓 열릴 시 호출
onmessage : 메시지 도착시 호출
onerror : 에러 발생시 호출
onclose : 웹소켓 닫히면 호출
send : 메시지 전송
close : 웹소켓 닫기
* WebSocket은 아주 간단한 기능들만 제공하기 때문에 SockJS, SockIO같은 오픈 소스 라이브러리를 많이
사용하고 있으며, 메시지 포멧 또한 STOMP 프로토콜을 같이 이용함.
Socket.io
: JavaScript를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현할 수 있도록 한 기술
WebSocket, FlashSocket, Ajax Long Polling, Ajax Multi part Streaming, JSON polling을 하나의 API로 추상화 한 것.
Node.js모듈
* 웹소켓은 요청을 위해 새로 연결을 만들 필요가 없고, 추가적인 헤더가 필요없기 때문에 Long Polling방식에 비해 효율적이다.
https://seolhun.github.io/Network-WhatIsTheWebSocket/