웹소켓을 공부하며, 이를 Spring Boot 환경에 적용시켜보고자, 간단한 채팅 서비스를 만들어 보려고 한다.
우선 의존성 추가는, spring web과 websocket을 추가해주었다.
WebSocketConfig
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry messageBrokerRegistry) {
// enableSimpleBroker -> 특정 경로로 시작하는 메시지를 클라이언트에게 바로 전달할 수 있게 함.
messageBrokerRegistry.enableSimpleBroker("/topic");
// setApplicationDestinationPrefixes -> 클라이언트가 전송하는 메시지를 해당 경로로 전송하게 하고, 처리할 핸들러에 연결.
messageBrokerRegistry.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry stompEndpointRegistry) {
// "/ws"로 WebSocket 엔드포인트를 설정하고, SockJS를 사용
stompEndpointRegistry.addEndpoint("/ws").withSockJS();
}
}
Java
복사
WebSocket을 활성화하고, 엔드포인트를 설정하는 클래스를 만들어준다.
@EnableWebSocketMessageBroker 로 메시지 브로커를 활성화한다.
이후, MessageBrokerRegistry를 활용하는 메시지 브로커 설정과, StompEndpointRegistry를 활용해 SockJS 엔드포인트 설정을 하는 메서드를 만들어준다.
"/topic" 으로 시작하는 메시지를 클라이언트에게 바로 전달할 수 있게 하고, 클라이언트가 전송한 메시지를 "/app" 으로 시작하는 경로로 전송하여 처리할 핸들러에 연결한다.
웹소켓 연결은 "/ws" 엔드포인트를 통해 stomp로 수행한다.