[스프링] 스프링 WebSocket과 WebSocket 핸들러

이번 포스트에서는 스프링 웹 소켓(Spring WebSocket)에 대해 알아보겠습니다. 웹 소켓은 실시간으로 양방향 통신을 위한 기술로, HTTP보다 가볍고 빠르며 커넥션을 유지하는 등의 특징이 있습니다. 스프링 웹 소켓은 이러한 웹 소켓을 스프링 애플리케이션에서 쉽게 사용할 수 있도록 지원합니다.

웹 소켓 핸들러 만들기

먼저, 웹 소켓 핸들러(WebSocket Handler)를 만들어보겠습니다. 웹 소켓 핸들러는 클라이언트와 서버 간의 웹 소켓 연결을 관리하고, 메시지를 주고받는 역할을 합니다.

import org.springframework.web.socket.handler.TextWebSocketHandler;

public class MyWebSocketHandler extends TextWebSocketHandler {
    // 웹 소켓 핸들러의 구현 내용
}

위의 코드는 TextWebSocketHandler를 상속받아 MyWebSocketHandler를 만드는 예시입니다. 실제로는 이 핸들러를 구현하여 연결 이벤트, 메시지 수신 이벤트 등을 처리할 수 있습니다.

스프링 구성 설정

다음으로, 스프링 구성 설정(Spring Configuration)에서 웹 소켓을 활성화하고 핸들러를 등록하는 작업이 필요합니다.

import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MyWebSocketHandler(), "/my-websocket-endpoint").setAllowedOrigins("*");
    }
}

위의 코드에서는 WebSocketConfigurer를 구현하여 MyWebSocketHandler를 등록하는 방법을 보여줍니다. 또한, @EnableWebSocket을 사용하여 웹 소켓을 활성화하고 있습니다.

클라이언트 코드

마지막으로, 클라이언트 측에서 웹 소켓을 사용하는 방법을 보겠습니다.

var socket = new WebSocket("ws://localhost:8080/my-websocket-endpoint");

socket.onopen = function() {
    console.log("웹 소켓 연결 열림");
};

socket.onmessage = function(event) {
    console.log("메시지 수신: " + event.data);
};

socket.onclose = function() {
    console.log("웹 솼켓 연결 닫힘");
};

위의 자바스크립트 코드는 클라이언트에서 웹 소켓을 사용하는 예시입니다. WebSocket 객체를 생성하여 서버의 웹 소켓 엔드포인트와 연결하고, 연결 이벤트, 메시지 수신 이벤트 등을 처리할 수 있습니다.

스프링 웹 소켓을 사용하여 실시간으로 양방향 통신을 구현하는 방법에 대해 간략히 알아보았습니다. 물론 실제 프로젝트에서는 더 다양한 기능을 활용하여 보다 복잡한 웹 소켓 기반 애플리케이션을 구현할 수 있습니다.