이전에 HTTP의 통신에 관해 말한적이 있습니다.
이 그림처럼 HTTP 통신은 채널을 만들어 request와 response를 보내게 되는데 이는 단발성이됩니다. 그렇기에 따로 상태를 가지지 않는 Stateless 상태가되 클라이언트의 요청 없이 서버 쪽에서 데이터를 보내주는것은 불가능합니다. 그뿐만 아니라 소규모의 요청이라도 계속해서 연결을 생성하고 해제해야하는 낭비가 생기게됩니다.
이러한 단점을 보안하기 위해 소켓 통신이 사용됩니다.
클라이언트와 서버, 두 컴퓨터가 특정한 Port를 통해 실시간으로, 양방향 통신을 가능하게 만든 통신을 의미합니다.
클라이언트만이 통신을 시작할 수 있었던 HTTP 통신과는 큰 차이점을 보여줍니다.
소켓 통신의 기본적인 동작은 다음과 같습니다:
실시간 채팅 애플리케이션, 멀티플레이어 게임, 실시간 데이터 스트리밍 처럼 소켓 통신은 다양한 경우에 사용될 수 있습니다.
reference
https://sparcs.org/blog/how-to-use-websocket/
https://www.ibm.com/docs/ko/i/7.3?topic=programming-how-sockets-work