HTTP, WebSocket, STOMP: 통신 프로토콜의 이해

박성호·2024년 2월 29일

HTTP와 WebSocket 그리고 STOMP 통신

HTTP

HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 가장 일반적으로 사용되는 프로토콜 중 하나입니다. 하지만 HTTP는 단방향 통신을 지원하며, 다음과 같은 특징을 가지고 있습니다:

비연결성 (Connectionless): 클라이언트가 서버에 요청을 보내면, 서버는 해당 요청에 대한 응답을 보내고 연결을 끊습니다. 이후에 다시 요청을 보낼 때마다 새로운 연결을 맺어야 합니다.

무상태성 (Stateless): 서버는 클라이언트의 상태를 유지하지 않습니다. 각각의 요청은 독립적으로 처리되며, 이전 요청과 상관관계가 없습니다.

WebSocket

WebSocket은 웹 서버와 웹 브라우저가 지속적으로 연결된 TCP 라인을 통해 실시간으로 데이터를 주고 받을 수 있도록 하는 HTML5의 새로운 사양입니다. HTTP와 달리 양방향 통신을 지원하는 프로토콜입니다. HTTP의 한계를 극복하기 위해 개발되었으며, 다음과 같은 특징을 가지고 있습니다:

양방향 통신 (Full Duplex): 클라이언트와 서버 간의 연결을 유지하고 양방향으로 데이터를 주고받을 수 있습니다. 이를 통해 실시간으로 데이터를 전송하고 수신할 수 있습니다.

효율성: WebSocket은 HTTP와 달리 항상 연결을 유지하므로, 데이터를 전송하기 위해 매번 새로운 연결을 맺을 필요가 없습니다. 이로 인해 더 적은 오버헤드와 빠른 속도를 제공합니다.

서버 푸시 (Server Push): 서버는 클라이언트에게 원격 제어나 실시간 업데이트와 같은 정보를 즉시 전송할 수 있습니다.

STOMP

STOMP(심플 텍스트 기반 메시징 프로토콜)은 websocket 위에서 동작하는 문자 기반 메세징 프로토콜로 메시지 지향 미들웨어와 클라이언트 간의 표준 프로토콜입니다. 주로 메시지 큐와 같은 미들웨어를 통해 메시지를 교환하는 데 사용됩니다. STOMP은 다음과 같은 특징을 가지고 있습니다:

간단한 프로토콜: STOMP은 텍스트 기반의 간단한 프로토콜로, 간단한 커맨드와 헤더로 구성되어 있습니다. 이로 인해 구현이 간단하고 이해하기 쉽습니다.

다양한 언어 지원: STOMP은 다양한 프로그래밍 언어와 플랫폼에서 지원되며, 메시지 지향 미들웨어와 클라이언트 간의 상호 운용성을 제공합니다.

실시간 메시지 전달: STOMP은 웹 소켓과 같은 실시간 통신 프로토콜과 함께 사용되어 실시간으로 메시지를 전달하고 처리할 수 있습니다.

HTTP, WebSocket, 그리고 STOMP의 활용
HTTP는 주로 웹 페이지 로드, API 호출 등의 요청-응답 방식의 통신에 사용됩니다. WebSocket은 실시간 채팅, 주식 시장 데이터 스트리밍, 실시간 게임 등의 실시간 통신에 적합합니다. STOMP은 메시지 큐와 같은 메시지 지향 미들웨어와 클라이언트 간의 통신에 사용됩니다.

근데 이렇게 보니까 진짜 매력적인 기능이 많이 보입니다.

특히 겜돌이인 저한테 갑자기 WebSocket이 눈에 들어오네요.
언젠가 게임도 ㅎㅎ..

profile
꾸준히 성장하는 개발자

0개의 댓글