[스프링] 스프링 WebSocket 연결 관리

웹소켓(WebSocket)은 양방향 통신을 지원하는 통신 프로토콜로, 실시간으로 데이터를 주고받을 수 있는 기술입니다. 스프링 프레임워크에서는 스프링 WebSocket을 통해 웹소켓을 쉽게 구현하고 관리할 수 있습니다.

1. 의존성 추가

스프링 프로젝트에 웹소켓을 사용하기 위해서는 먼저 필요한 의존성을 추가해야 합니다. Maven을 사용하는 경우 아래와 같이 의존성을 추가할 수 있습니다.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-websocket</artifactId>
    <version>5.3.9</version>
</dependency>

2. 웹소켓 설정

웹소켓을 사용하기 위해 스프링 설정 파일에 다음과 같이 WebSocket 설정을 추가합니다.

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(myHandler(), "/myHandler");
    }
    
    @Bean
    public WebSocketHandler myHandler() {
        return new MyHandler();
    }
}

위 코드에서 MyHandler는 웹소켓 요청을 처리하는 핸들러 클래스입니다.

3. 웹소켓 연결 관리

웹소켓 연결과 관련된 이벤트를 처리하려면 WebSocketHandler 인터페이스를 구현하여 사용자 정의 핸들러를 만들어야 합니다.

public class MyHandler extends TextWebSocketHandler {

    @Override
    public void afterConnectionEstablished(WebSocketSession session) throws Exception {
        // 웹소켓 연결이 열리면 호출됩니다.
    }

    @Override
    protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
        // 클라이언트로부터 메시지를 수신했을 때 호출됩니다.
    }

    @Override
    public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
        // 웹소켓 연결이 닫힐 때 호출됩니다.
    }
}

위 코드에서 afterConnectionEstablished, handleTextMessage, afterConnectionClosed 메서드를 구현하여 각각 연결 개설, 메시지 수신, 연결 종료와 관련된 로직을 처리할 수 있습니다.

웹소켓을 사용해서 실시간으로 데이터를 주고받으려면 다양한 기능과 이벤트 처리가 필요합니다. 스프링 프레임워크의 확장성과 다양한 기능을 활용하여 웹소켓 연결을 효과적으로 관리할 수 있습니다.

참고문헌: