[스프링] 웹 소켓 통신 방법

본 문서에서는 스프링 프레임워크에서 웹 소켓을 이용한 양방향 통신 방법에 대해 알아보겠습니다.

1. 웹 소켓이란?

웹 소켓은 웹 애플리케이션과 서버 간의 양방향 통신을 위한 표준 프로토콜입니다. HTTP와 달리 상시 연결을 유지하고 있어 실시간 데이터 전송에 용이합니다.

2. 스프링을 이용한 웹 소켓 설정

2.1 의존성 추가

먼저 pom.xmlSpring Websocket 모듈의 의존성을 추가합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

2.2 웹 소켓 구성

WebSocketConfig 클래스를 생성하여 웹 소켓 구성을 정의합니다.

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic");
        config.setApplicationDestinationPrefixes("/app");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws-endpoint").withSockJS();
    }
}

2.3 웹 소켓 핸들러 구현

실제로 클라이언트의 메시지를 처리하기 위해 웹 소켓 핸들러를 구현합니다.

@Component
public class WebSocketHandler extends TextWebSocketHandler {

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        String payload = message.getPayload();
        // 메시지 처리 로직 작성
    }
}

2.4 클라이언트 활용

웹 소켓 클라이언트에서는 SockJSStomp 프로토콜을 이용하여 서버와 연결하고 메시지를 주고받을 수 있습니다.

var socket = new SockJS('/ws-endpoint');
var stompClient = Stomp.over(socket);

stompClient.connect({}, function (frame) {
    stompClient.subscribe('/topic/messages', function (message) {
        // 메시지 수신 처리 로직 작성
    });
});

3. 결론

스프링 프레임워크를 이용하여 웹 소켓을 구성하고 활용하는 방법에 대해 알아보았습니다. 웹 소켓을 이용하면 실시간으로 데이터를 교환하고 상황에 맞게 처리할 수 있어 다양한 웹 애플리케이션 개발에 활용될 수 있습니다.

참고 문서