@ EnableWebSocket vs @ EnableWebSocketMessageBroker
@EnableWebSocket:
• 저수준 WebSocket API를 제공합니다.
• 직접 WebSocket 핸들러를 구현해야 합니다.
• STOMP와 같은 프로토콜 지원이 없습니다.
• 유연성이 높지만, 복잡한 메시징 기능은 직접 구현해야 합니다.
• @EnableWebSocketMessageBroker:
• 고수준 메시징 프로토콜(STOMP)을 사용합니다.
• 메시지 브로커를 통해 메시지를 라우팅하고 처리합니다.
• 채팅, 알림 등 복잡한 메시징 애플리케이션에 적합합니다.
• 메시지 브로커와 클라이언트 간의 메시징을 쉽게 설정할 수 있습니다.
예시 1: @EnableWebSocket - 기본 WebSocket
상황: 당신은 실시간 그래픽 애플리케이션을 만들고 있습니다. 이 애플리케이션은 여러 클라이언트가 동시에 접속하여 서로의 그림을 실시간으로 공유할 수 있게 하고 싶습니다. 이 경우에는 서버가 메시지를 받아서 그대로 다른 클라이언트로 전송하는 기능만 필요합니다.
설명: 여기서는 WebSocket을 사용하여 직접 클라이언트와 서버 간에 메시지를 주고받게 됩니다. 클라이언트가 마우스를 움직일 때마다 좌표 데이터를 서버로 보내고, 서버는 이 데이터를 받은 다른 클라이언트들에게 그대로 전송합니다. 여기서는 중간에 복잡한 메시지 브로커나 프로토콜이 필요하지 않습니다. 서버는 단순히 메시지를 받아서 전송만 하면 됩니다.
예시 2: @EnableWebSocketMessageBroker - STOMP 메시지 브로커
상황: 당신은 채팅 애플리케이션을 만들고 있습니다. 이 애플리케이션은 여러 채팅방을 지원하며, 사용자는 원하는 채팅방에 들어가서 메시지를 주고받을 수 있습니다. 메시지는 특정 채팅방에만 전달되고, 새로운 사용자가 채팅방에 들어오면 환영 메시지를 받아야 합니다.
설명: 여기서는 메시지를 특정 주제로 라우팅하거나, 새로운 사용자가 들어왔을 때 특정 이벤트를 처리하는 등 더 복잡한 기능이 필요합니다. 이런 경우 메시지 브로커를 사용하여 메시지를 라우팅하고 관리하는 것이 더 효율적입니다. STOMP를 사용하면 클라이언트가 특정 채팅방(주제)을 구독하고, 메시지를 보낼 수 있습니다. 서버는 메시지를 받아서 적절한 주제로 라우팅합니다.


