MDP
실시간 채팅을 구현 - 1 본문
이번에 프로젝트를 진행하면서 실시간 채팅 구현을 진행해야 하는데 현재 목표로 잡고 있는것은 카카오톡과 같은 채팅 프로그램을 개발하는것이 목표이다. 그래서 오늘부터 이와 관련된 글을 작성해 보려고 한다.
WebSocket vs STOMP
WebSocket
- WebSocket은 클라이언트와 서버 간의 전이중 통신을 지원하는 프로토콜이다. HTTP보다 낮은 레벨에서 동작하고 있고 주로 실시간 통신이 필요한 애플리케이션에서 사용되고 있다.
- 장점 -
- 메시지 라우팅, 구독 관리, ACK/NACK, 트랜잭션 등의 고급 기능을 내장하고 있음
- 텍스트 기반 프로토콜로, 명령, 헤더, 바디로 구성된 프레임을 사용하여 메시지를 전달
- RabbitMQ, ActiveMQ 등과 같은 메시지 브로커와 쉽게 연동할 수 있음
- 단점 -
- 추가적인 프레임 구조로 오버헤드가 발생할 수 있음
- 메시지 형식이나 프로토콜의 표준화가 부족하여, 개발자가 모든 것을 직접 처리해야 함
STOMP
- 메시징 프로토콜로, WebSocket 위에서 동작할 수 있음. 주로 메시지 브로커와의 통신을 위해 사용 됨
- 장점 -
- 메시지 라우팅, 구독 관리, ACK/NACK, 트랜잭션 등의 고급 기능을 내장하고 있음
- 텍스트 기반 프로토콜로, 명령, 헤더, 바디로 구성된 프레임을 사용하여 메시지를 전달
- RabbitMQ, ActiveMQ 등과 같은 메시지 브로커와 쉽게 연동할 수 있음
- 단점 -
- 다양한 기능을 제공하지만, 그만큼 설정과 관리가 복잡할 수 있음.
위와 같은 내용을 정리해 보면
WebSocket을 사용하면
1. 커스텀 기능을 구현해야 하거나 특정한 성능 최적화가 필요한 경우 사용하면 좋을 것 같다. 그 이유는 메시지 형식이나 프로토콜의 표준화를 개발자가 직접 처리할 수 있기 때문
2. 단순한 실시간 통신을 위해서는 WebSocket 통신 방법을 선택해도 좋을 듯 하다.
STOMP 사용하면
1. 그룹채팅, 알림 시스템, 다양한 메시지 타입 등의 복잡한 기능을 사용할 수 있다.
2. 확장성과 안정성을 위해 메시지 브로커와의 연동을 이용할 수 있다.
이런 정보들을 취합했을 때 STOMP를 프로젝트에 사용하는게 더 효과적일 것 같다
'프로젝트 > Extra' 카테고리의 다른 글
Redis refresh Token + Black List 써야하는 이유 - Redis refresh Token (0) | 2024.07.22 |
---|---|
알림 기능 및 DB 조사 - DB 조사 (0) | 2024.07.22 |
알림 기능 및 DB 조사 - 알림 기능 (0) | 2024.07.22 |
NOSQL - MongoDB (4) | 2024.07.20 |
QR 코드를 활용하여 출퇴근 관리 하는 방법 (0) | 2024.07.17 |