WebSocket은 클라이언트와 서버가 데이터를 주고 받는 방식 중 하나입니다. 주로 실시간성이 중요한 서비스에 활용되는데요. HTTP와 비교하면서 알아보면 이해가 좀 더 쉽습니다.
HTTP 통신
HTTP 통신은 클라이언트가 요청을 보내면 서버가 응답을 반환하는 흐름입니다. 요청이 있을 때만 서버가 응답합니다. 통신으로 용건이 끝났으면 연결이 끊어지고 새로운 요청이 있을 때마다 다시 연결합니다. 단순하고 안정적입니다.
예를 들어, 사용자가 인터넷에서 특정 사이트의 글을 클릭할 때마다 서버에서 HTML 파일을 가져오는 걸 생각하면 됩니다. 액션을 줬을 때 클라이언트가 요청하고 서버로부터 응답을 받습니다.

WebSocket 통신
websocket은 양방향 통신을 가능하게 하는 프로토콜입니다. 처음에는 http로 연결을 맺지만 이후 하나의 지속적인 연결을 통해 클라이언트와 서버가 자유롭게 데이터를 주고 받습니다.
한 번 연결 후 연결을 계속 유지하기 때문에 클라이언트든 서버든 원할 때 통신을 날릴 수 있습니다. 이 경우엔 클라이언트의 요청 없이 서버가 일방적으로 데이터를 보내기도 합니다.
예를 들어, 채팅이나 실시간 알림, 주식 거래 시스템, 온라인 게임 등을 생각할 수 있습니다. 실시간성이 높다는 게 가장 큰 특징입니다.
정리하면 http와 websocket은 서로의 장단점이 있기 때문에 선택적으로 융합해서 사용할 수 있습니다. 일반적으로 웹사이트에선 http가 효율적이고 실시간 상호작용이 중요한 서비스에서는 websocket이 강점이 있습니다.