
웹소켓을 이해하기 위해서는 먼저 http를 이해할 필요가 있다.
브라우저와 서버는 데이터를 http를 이용해 소통한다.
브라우저 → 서버로 요청을 하고, 응답을 받으면 통신은 종료된다.
여기서 중요한 점은 거꾸로 브라우저의 요청이 있기 전까지는 서버는 아무것도 보낼 수 없다는 점
때문에 http만을 이용해서 실시간처리를 구현하려면 브라우저에서 서버로 짧은 간격으로 멈춤없이 요청을 보내야 한다는 것이다.
실제로 웹소켓은 HTML5에서부터 지원됐고, 그 전에는 위에서 말한 방식대로 실시간 처리를 흉내내는 방법을 사용했다. 때문에 매우 비효율적이었다.
웹소켓 프로토콜은 http 통신 방식과 좀 다르다.
http 통신처럼 request, response가 아니고 open, close 방식이다.

open일때는 통신이 양방향으로 유지가 되고, close일땐 통신이 종료된 상태이다. 마치 전화통화같다.
연결을 하는 주체는 브라우저에서 서버로 연결을 한다. 당연한건가? 브라우저에서 채팅을 치면 서버에 통신을 보내야 하니까 웹소켓을 이용해 원하는 순간까지 통신을 열어놓는다고 생각하면 된다.
이제 서버는 웹소켓의 요청을 기다릴 필요가 없다. 연결이 오픈돼있으니 원할 때 마다 데이터를 보낼 수 있게 된것이다.
하지만 웹소켓은 사용자들 끼리 연결된 것이 아니다. 아래 그림을 보면
