
HTTP - http를 사용하면 클라이언트가 요청을 보내고 그 요청에 따라 서버가 응답하게 됨
	      앱 서버가 응답을 보낸 뒤에 브라우저와의 통신을 끊음, 양쪽이 데이터를 동시에 보내는 것이 아니기 때문에 이러한 방식을 반이중 통신이라고 함
	      
이러한 HTTP의 약점을 보완하는 방식이 AJAX이다. 서버에 요청을 보내면 서버가 응답하는 방식이기는 하지만
페이지 전체 요청이 아닌 데이터 요청이기 때문에 부분적으로 정보를 갱신할 수 잇게됨

하지만 Ajax도 결국은 http를 이용하기 때문에 요청을 보내야만 응답이 오게 됨
변경된 데이터를 가져오기 위해서 버튼을 누른다던가 일정시간 주기로 요청을 보내면 번거롭고 또 자원의 낭비가 발생함

따라서 이러한 문제점들을 해결하기 위한 방법이 바로 웹 소켓임

웹 앱에서 서버와 클라이언트 간의 통신은 대부분 http를 통해 이루어지고 이것은 영구적인 연결이 아닌
클라이언트의 요청 request 할 때만 서버가 응답 response하는 방식으로 통신이 진행된다
이런 경우 서버쪽 데이터가 업데이트 되더라도 클라이언트 쪽에는 화면이 변경되지 않음
리프레시 하지 않는 이상 변경된 데이터가 업데이트 되지 않는 문제가 발생함
이러한 문제를 해결하는 임시 방법인 Long polling 또는 Ajax를 사용해도 어느 정도는 해결 가능 하지만
데이터의 빠른 업데이트가 아주 중요한 요소인 앱에서는 실시간 업데이트가 아주 중요하기 때문에 Web Socket이 아주 중요하게 사용됨
따라서 http 사용시 필요없이 발생되는 트래픽을 피할 수도 있음

또 하나 Web Socket은 http와 같은 포트를 사용하기 때문에 방화벽 등의 재설정도 필요하지 않은 장점이 있음

처음 접속에는 http를 사용하지만 일단 접속 확립이 이루어지면 그 뒤부터는 Web Socket 독자의 프로토콜로 이루어짐
장시간 접속을 전체를 하기 때문에 접속한 상태라면 클라이언트나 서버로부터 지속적인 데이터 송신이 가능해짐
데이터의 송신과 수신에 각각 커넥션을 매번 맺을 필요가 없어져서 하나의 커넥션으로 데이터를 송수신 할 수 있게 됨