하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜.
서버와 클라이언트 간에 Socket Connection을 유지해서 언제든 양방향 통신 또는 데이터 통신이 가능하도록 하는 기술이다.
기존 방식의 단점 보안
기존 Client - Server 통신은 HTTP를 통해 이루어졌다. HTTP는 요청(Request) 과 응답(Response)기반의 Stateless protocol이다. 다시 말해, Client와 Server간에 영구적인 연결이 되어 있지않고, 클라이언트 쪽에서 필요할 때 요청(Request)를 하고 서버가 응답(Response)하는 한방향 통신이다.
이 경우에는, 서버 쪽 데이터가 바뀌어도 클라이언트에서 Refresh등을 하지 않는한 데이터가 업데이트 되지 않는다.
위의 단점을 해결하기 위한 방법 들
Transport Protocol의 일종으로 C/S 간 양방향 통신을 실현하기 위한 구조이다. 단순한 API로 구성되어 있으며, 웹소켓을 이용하면 하나의 HTTP 접속으로 통신을 주고 받을 수 있다. 채팅, 게임, 실시간 차트의 프로그램 등을 효과적으로 구현할 수 있다.
서버와 클라이언트간의 HTTP프로토콜을 통해 웹소켓을 연결한다. TCP/IP기반 으로 일정 시간이 지나면 HTTP연결은 자동으로 끊어진다. 기본적으로 웹소켓 API는 간단한 기능만 제공해서 SockJS나 Socket.io같은 오픈 소스 라이브러리를 많이 사용한다. 메시지 또한 STOMP같은 프로토콜을 사용한다.
위 배경에서 웹소켓이 나오기 이전에는 모두 클라이언트의 요청이 없다면, 서버로부터 응답을 받을 수 없는 구조였다. WebSocket은 C/S 간 양방향 소통이 하다. 유저는 바로바로 바뀐 데이터를 볼 수 있다. 이러한 이유로 실시간이 요구되는 응용프로그램의 개발을 WebSocket을 통해 효과적으로 구현할 수 있다.