[스프링] 스프링 WebSocket을 활용한 실시간 데이터 전송

웹 애플리케이션에서 실시간 통신을 위해 WebSocket은 매우 효과적인 기술이다. 스프링 프레임워크스프링 WebSocket 모듈을 통해 간편하게 WebSocket을 구현할 수 있도록 지원한다. 이를 통해 양방향 통신으로 실시간 데이터를 주고받을 수 있다.

스프링 WebSocket 설정하기

먼저, 스프링 부트 프로젝트에 모듈을 추가하고 WebSocket을 설정해야 한다. build.gradle 파일에 다음과 같이 의존성을 추가한다.

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-websocket'
}

그런 다음, WebSocket 구성을 위한 WebSocketConfig 클래스를 작성하여 @EnableWebSocketMessageBroker 어노테이션을 지정한다.

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

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

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

클라이언트 측 구현

웹 애플리케이션의 클라이언트 측에서는 SockJSSTOMP 프로토콜을 사용하여 WebSocket에 연결하고 메시지를 주고받을 수 있다.

var socket = new SockJS('/ws');
var stompClient = Stomp.over(socket);
stompClient.connect({}, function (frame) {
    stompClient.subscribe('/topic/messages', function (response) {
        // 실시간으로 전달 받은 데이터 처리
    });
});

위 코드는 클라이언트 측에서 /ws 엔드포인트에 연결하고 /topic/messages를 구독하여 실시간 데이터를 수신하는 방법을 나타낸다.

데이터 전송

웹 소켓을 통해 데이터를 전송하기 위해 SimpMessagingTemplate를 사용할 수 있다. 서버 측에서 다음과 같이 메시지를 전송할 수 있다.

@Autowired
private SimpMessagingTemplate messagingTemplate;

public void sendMessage() {
    messagingTemplate.convertAndSend("/topic/messages", "데이터 전송");
}

마치며

스프링 WebSocket을 활용하면 실시간 데이터 전송을 쉽게 구현할 수 있다. 클라이언트와 서버 간 양방향 통신을 통해 실시간으로 데이터를 주고받을 수 있으며, 이를 통해 다양한 실시간 기능을 구현할 수 있다.

참고: 스프링 공식 문서 - WebSocket을 통한 메시징