8건의 항목
DefaultHandshakeHandler 정의 WebSocket 연결 시 Principal을 설정하여 사용자를 구분할 수 있는 핸들러입니다. WebSocket 세션과 사용자를 매핑하는 데 유용하며, SimpMessagingTemplate을 사용하여 특정 사용자에게 메시지를 보낼 때 활용됩니다.
WebSocket 기반의 STOMP 메시징에서는 사용자 구분 및 특정 사용자에게 메시지를 전송하는 기능이 필요할 수 있습니다. WebSocket에선 사용자가 WebSocket에 연결될 때 Principal 객체를 사용하여 구분할 수 있고, 특정 사용자의 세션 ID를 가져와서 메시지를 개별적으로 보낼 수 있습니다.
WebSocketMessageBrokerConfigurer 정의 WebSocketMessageBrokerConfigurer는 Spring에서 STOMP 기반의 WebSocket 메시지 브로커를 설정할 때 사용하는 인터페이스입니다. 메시지 브로커 기반으로 설정하는 클래스이며, 단순 WebSocket 설정을 위해서는 WebSocketConfigurer로 설정을 해 줘야 합니다.
STOMP 정의 STOMP(Simple Text Oriented Messaging Protocol)는 텍스트 기반의 메시징 프로토콜로, WebSocket 위에서 동작하는 Pub/Sub(발행/구독) 모델을 지원하는 프로토콜입니다.WebSocket이 양방향 통신을 위한 저수준 프로토콜이라면, STOMP는 메시지 브로커를 ...
기본적인 WebSocket은 클라이언트와 서버 간의 양방향 통신을 가능하게 하지만, 메시지를 어떻게 구성하고 처리할지에 대한 표준이 없습니다. 이를 해결하기 위해 WebSocket 위에서 동작하는 STOMP을 사용하면, 일정한 규격을 갖춘 메시지를 주고받을 수 있으며, 메시지 브로커를 활용한 Pub/Sub 구조를 쉽게 구현할 수 있습니다.
WebSocketConfigurer 정의 WebSocketConfigurer는 Spring에서 WebSocket 핸들러를 등록하는 인터페이스이를 구현하면 WebSocket 엔드포인트를 설정하고, 특정 핸들러와 매핑할 수 있습니다. 단순 WebSocket이 필요한 상태일 때 사용하는 설정 클래스이며, 메시지 브로커 기반으로 설정을 위해서는 WebSocketMessageBrokerConfigurer로 설정을 해 줘야 합니다.
WebSocketHandler 정의 Spring에서 제공하는 WebSocket을 처리하기 위한 WebSocketHandler 인터페이스이를 구현하는 방식에 따라 TextWebSocketHandler와 BinaryWebSocketHandler 등으로 나뉩니다. WebSocketHandler 종류 핸들러 종류사용 목적지원 메시지 유형WebSocketHandler기본 WebSocket 인터페이스텍스트 + 바이너리TextWebSocketHandler텍스트 메시지 전용 (채팅, JSON)TextMessageBinaryWebSocketHandler파일, 이미지, 오디오 등 바이너리 전용BinaryMessagePerConnectionWebSocketHandler세션별 독립적인 핸들러 생성텍스트 + 바이너리 주요 메서드 메서드설명afterConnectionEstablished클라이언트가 연결되었을 때 호출handleMessage클라이언트가 메시지를 보냈을 때 호출handleTransportErrorWebSocket 통신 중 오류 발생 시 호출afterConnectionClosed클라이언트가 연결을 종료했을 때 호출supportsPartialMessages부분 메시지(프레임 분할)를 지원하는지 여부 구현 예시 간단히 TextWebSocketHandler를 구현한 예시입니다.
기본적인 WebSocket 기능을 사용하여 양방향 통신이 가능하도록 구현합니다. 필요 라이브러리 // build.gradle .. dependencies { .. implementation 'org.springframework.boot:spring-boot-starter-websocket' } ..