WebSocketby Pigbrain
웹소켓의 장점과 단점
- 장점
- HTTP가 아닌 TCP를 이용하여 통신한다
- 양방향 통신을 지원한다
- HTTP보다 빠르다
- 단점
- 브라우저에서 HTML5을 지원해야 한다
- 클라이언트와 서버가 통신하기 위해서 특정 프로토콜이 필요하다
웹소켓 프로토콜
- HTTP handshake
- 클라이언트는 서버에게 웹소켓 사용을 위한 HTTP 패킷을 보낸다
- 서버에서 해당 프로토콜을 지원한다면 웹소켓 사용을 위한 응답을 보낸다
- Connection : “Upgrade” 토큰이 반드시 있어야 한다
- Sec-WebSocket-Key : Base64로 인코딩된 랜덤한 16바이트의 문자열
- Sec-WebSocket-Accept :
- Sec-WebSocket-Key + “258EAFA5-E914-47DA-95CA-C5AB0DC85B11”
- uRovscZjNol/umbTt5uKmw==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
- SHA-1으로 해싱
- acb1c2930fd22ac3 bd1801ff65216104 04c32ab5
- Base64로 인코딩
- rLHCkw/SKsO9GAH/ZSFhBATDKrU=
- Sec-WebSocket-Version : 무조건 13 !
- Updage : “websocket” 키워드가 반드시 있어야 한다
웹소켓 API
- 웹소켓 생성
-
연결 완료 콜백
-
메세지 수신 콜백
-
연결 종료 콜백
-
메세지 전송
- 웹소켓 종료
웹소켓 지원 서버
- NC: Native Comet (The WebServer has API for Comet)
- NWS: Native WebSockets (The WebServer has API for WebSocket)
- W: WebSockets
- LP: Long-Polling
- HS: Http Streaming
- J: JSONP
- SSE: Server-Sent Events
웹소켓 지원 브라우저
참고
- https://www.websocket.org/aboutwebsocket.html
- http://synvistech.com/blogs/advantages-disadvantages-of-websocket-api
- https://github.com/Atmosphere/atmosphere/wiki/Supported-WebServers-and-Browsers
Published 22 September 2015