[10분 테코톡] 🧲코일의 Web Socket
https://www.youtube.com/watch?v=MPQHvwPxDUw
웹 소켓(Web Socket)
· 두 프로그램 간의 메시지를 교환하기 위한 통신 방법 중 하나
· W3C와 IETF에 의해 자리 잡은 표준 프로토콜 중 하나
· 현재 인터넷 환경(HTML5)에서 많이 사용
웹 소켓의 특징
1. 양방향 통신(Full-Deplex)
· 데이터 송수신을 동시에 처리할 수 있는 통신 방법
· 클라이언트와 서버가 서로에게 원할 때 데이터를 주고 받을 수 있다.
· 통상적인 Http 통신은 Client가 요청을 보내는 경우에만 서버가 응답하는 단방향 통신
2. 실시간 네트워킹(Real Time-Networking)
· 웹 환경에서 연속된 데이터를 빠르게 노출
· Ex) 채팅, 주식, 비디오 데이터 ...
· 여러 단말기에 빠르게 데이터를 교환
웹 소켓과 비슷한 기술로는 Polling, Long Polling, Streaming이 있는데 결과적으로 이 모든 방법이 HTTP를 통해 통신하기 때문에 Request, Response 둘 다 Header가 불필요하게 크다.
웹 소켓 프로토콜 특징
· 최초 접속에서만 http 프로토콜 위에서 핸드쉐이킹을 하기 때문에 http header를 사용
· 웹소켓을 위한 별도의 포트는 없으며, 기존 포트(http-80, https-443)을 사용
· 프레임으로 구성된 메시지라는 논리적 단위로 송수신
· 메시지에 포함될 수 있는 교환 가능한 메시지는 텍스트와 바이너리뿐
웹 소켓의 한계
· 웹 소켓은 HTML5 이후 나온 기술 → 그럼 HTML5 이전의 기술로 구현된 서비스에서는?
· Socket.io, SockJs → 웹 소켓처럼 사용할 수 있도록 도와주는 기술
- 자바스크립트를 이용하여 브라우저 종류에 상관없이 실시간 웹을 구현
- 브라우저와 웹 서버의 종류와 버전을 파악하여 가장 적합한 기술을 선택하여 사용하는 방식
- 웹 소켓은 문자열들을 주고 받을 수 있게만 해준다.
- 주고 받은 문자열의 해독은 온전히 애플리케이션에게
- HTTP는 형식을 정해두었기 때문에 모두가 약속을 따르기만 하면 쉽게 해석 가능
- 웹소켓은 형식이 없어서 해석이 쉽지 않다.
→ 웹 소켓 방식은 서브 프로토콜을 사용해서 주고 받는 메시지의 형태를 약속하는 경우가 많다.
· 서브 프로토콜로 잘 쓰이기는 게 STOMP
· STOMP(Simple Text Oriented Message Protocol)
- 채팅 통신을 하기 위한 형식을 정의
- HTTP와 유사하게 간단히 정의되어 해석하기 편한 프로토콜
- 일반적으로 웹 소켓 위에서 동작