스파르타 내일배움캠프에서 진행하는 최종 프로젝트 구현 일지를 작성합니다.
채팅 서비스 구현에 WebSocket, Stomp, Redis를 사용하기로 했다.
3가지 모두 어디선가 들어는 보기만 해서 하루에 하나씩 정리해보려고 한다!
기존의 단방향인 HTTP 프로토콜과 호환되어 양방향 통신을 제공하기 위해 개발된 프로토콜
일반 Socket통신과 달리 HTTP 80 Port를 사용해 방화벽에 제약이 없다.
접속까지는 HTTP 프로토콜을 이용하고, 그 이후 통신은 자체적인 WebSocket 프로토콜로 통신한다.
HTTP 통신은 반이중 통신(Half Duflex)로 클라이언트가 요청을 보내면 서버가 응답하고 연결을 끊어낸다.
연결하고 연결을 해제해 효율이 떨어지는 문제를 보완하기 위해 WebSocket이 생겼다!
(사실은 WebSocket 이전에 Polling, Long Polling, Streaming 등의 방식이 있었다.)
WebSocket은 클라이언트가 접속 요청을 하고 서버가 응답을 한 후에 연결을 계속 유지하고 클라이언트의 요청이 없어도 데이터를 전송할 수 있다.
실시간성을 보장해야 하고, 변경사항의 빈도가 잦다면 WebSocket 사용이 아주 효율적이다.
그래서 실시간으로 메세지를 주고받는 채팅 기능에는 WebSocket이 적합하다!
하지만 WebSocket만으로 채팅을 구현하기에는 몇 가지 문제가 있는데 그 중 3가지만 이야기해보자면 아래와 같다.