MDP

실시간 채팅을 구현 - 1 본문

프로젝트/Extra

실시간 채팅을 구현 - 1

모다팡 2024. 7. 17. 18:53

이번에 프로젝트를 진행하면서 실시간 채팅 구현을 진행해야 하는데 현재 목표로 잡고 있는것은 카카오톡과 같은 채팅 프로그램을 개발하는것이 목표이다. 그래서 오늘부터 이와 관련된 글을 작성해 보려고 한다.

 

WebSocket vs STOMP

WebSocket

- WebSocket은 클라이언트와 서버 간의 전이중 통신을 지원하는 프로토콜이다. HTTP보다 낮은 레벨에서 동작하고 있고 주로 실시간 통신이 필요한 애플리케이션에서 사용되고 있다. 

 

- 장점 - 

  • 메시지 라우팅, 구독 관리, ACK/NACK, 트랜잭션 등의 고급 기능을 내장하고 있음
  • 텍스트 기반 프로토콜로, 명령, 헤더, 바디로 구성된 프레임을 사용하여 메시지를 전달
  • RabbitMQ, ActiveMQ 등과 같은 메시지 브로커와 쉽게 연동할 수 있음

- 단점 -

  • 추가적인 프레임 구조로 오버헤드가 발생할 수 있음
  • 메시지 형식이나 프로토콜의 표준화가 부족하여, 개발자가 모든 것을 직접 처리해야 함

STOMP

- 메시징 프로토콜로, WebSocket 위에서 동작할 수 있음. 주로 메시지 브로커와의 통신을 위해 사용 됨

 

- 장점 -

  • 메시지 라우팅, 구독 관리, ACK/NACK, 트랜잭션 등의 고급 기능을 내장하고 있음
  • 텍스트 기반 프로토콜로, 명령, 헤더, 바디로 구성된 프레임을 사용하여 메시지를 전달
  • RabbitMQ, ActiveMQ 등과 같은 메시지 브로커와 쉽게 연동할 수 있음

- 단점 - 

  • 다양한 기능을 제공하지만, 그만큼 설정과 관리가 복잡할 수 있음.

위와 같은 내용을 정리해 보면 

 

WebSocket을 사용하면

1. 커스텀 기능을 구현해야 하거나 특정한 성능 최적화가 필요한 경우 사용하면 좋을 것 같다. 그 이유는 메시지 형식이나 프로토콜의 표준화를 개발자가 직접 처리할 수 있기 때문

2. 단순한 실시간 통신을 위해서는 WebSocket 통신 방법을 선택해도 좋을 듯 하다.

 

STOMP 사용하면

 

1. 그룹채팅, 알림 시스템, 다양한 메시지 타입 등의 복잡한 기능을 사용할 수 있다.

2. 확장성과 안정성을 위해 메시지 브로커와의 연동을 이용할 수 있다.

 

이런 정보들을 취합했을 때 STOMP를 프로젝트에 사용하는게 더 효과적일 것 같다