웹 소켓이란 ?
웹 소켓은 두 프로그램 간의 메시지를 교환하기 위한 통신 방법중 하나이다
W3C와 IETF에 의해 자리잡은 표준 프로토콜 중 하나이다 라고 설명할 수 있지만
쉽게 현재 인터넷 환경(HTML) 에서 많이 사용 되는 기술이다.
1 . 양방향 통신이 가능하다
(통상적인 http 통신은 client가 요청을 보내는 경우에만 서버가 응답하는 단방향 통신이고 양방향은 서로가 원할때에 언제든지 데이터를 주고 받을 수 있는 통신이다.)
2 . 실시간 네트워킹
(웹 환경에서 빠르게 데이터를 주고 받을 수 있는 채팅, 주식등을 의미한다)
대표적으로 Poling이 있으며 그 이외에 long poling, streaming등이 있다.
(참고로 이 모든것의 단점을 해결하기 위한 것이? 바로 웹소켓!)
Poling : real-time 통신에는 언제 통신이 발생하게 될지 모르기 때문에 서버로 일정 주기마다 계속 통신을 보낸다 그렇기 때문에
불필요한 request와 connection을 생성한다.
결과적으로 위의 모든 방법이 HTTP를 통해 통신하기 때문에 Request와 Response등 둘다 Header가 불필요하게 크다
클라이언트와 서버에서 이루어지는 방식은
핸드쉐이크 > 데이터를 양방향으로 주고 받음 > 웹소켓을 close함
아래의 사진을 확인하면 좀 더 클라이언트와 서버 간의 웹 소켓 동작 방법을 이해 할 수 있다.
핸드쉐이크 후 데이터를 양방향 주고 받으며 마지막 close를 한다..
HTML5 이전에 기술로 구현된 서비스에서는 웹 소켓처럼 사용할 수 있도록 도와주는 기술
(Socket.io, SockJS 등이 있다)
즉 브라우저와 웹 서버의 종류와 버전을 파악해서 가장 적합한 기술을 선택해 사용해야 한다.