[스프링] 스프링 WebSocket을 활용한 실시간 주식 시세 업데이트

이번에는 스프링(Spring) 프레임워크에서 제공하는 WebSocket을 활용하여 실시간 주식 시세를 업데이트하는 방법에 대해 알아보겠습니다.

1. WebSocket 소개

WebSocket은 양방향 통신 프로토콜로, 클라이언트와 서버 간의 실시간 데이터 전송을 지원합니다. 기존의 HTTP 프로토콜보다 가벼우며, 서버로부터의 푸시 기능을 제공하여 실시간 통신에 적합합니다.

2. 스프링 WebSocket 설정

먼저, 스프링 프레임워크에서 WebSocket을 사용하기 위해 설정이 필요합니다. WebSocketConfigurer 인터페이스를 구현하여 WebSocket 관련 설정을 정의할 수 있습니다.

아래는 WebSocket을 활성화하고 STOMP 메시징 프로토콜을 사용하기 위한 간단한 설정 예시입니다.

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/updates").withSockJS();
    }

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

위 설정에서 /updates 엔드포인트를 통해 클라이언트가 WebSocket 연결을 시도할 수 있고, /topic을 통해 메시지를 구독할 수 있게 됩니다.

3. 실시간 주식 시세 업데이트 구현

주식 시세를 실시간으로 업데이트하기 위해서는 주식 시세 정보를 제공하는 데이터 소스와 WebSocket을 통해 해당 정보를 클라이언트로 전송하는 로직을 구현해야 합니다.

아래는 간단한 주식 시세 업데이트 로직의 예시입니다.

@Controller
public class StockPriceController {
    @MessageMapping("/updateStockPrice")
    @SendTo("/topic/stock")
    public StockPrice updateStockPrice(Stock stock) {
        // 주식 시세 업데이트 로직 구현
        StockPrice updatedPrice = stockService.getUpdatedPrice(stock);
        return updatedPrice;
    }
}

위의 코드에서 @MessageMapping은 클라이언트로부터 메시지를 수신하는 엔드포인트를 정의하고, @SendTo는 해당 엔드포인트로 클라이언트에게 메시지를 전송합니다.

4. 클라이언트 구현

마지막으로, WebSocket을 통해 실시간으로 주식 시세를 받아오는 클라이언트를 구현해야 합니다. 이를 위해 STOMP 클라이언트를 사용하여 WebSocket 연결을 설정하고, 주식 시세를 수신하는 로직을 구현할 수 있습니다.

var socket = new SockJS('/updates');
var stompClient = Stomp.over(socket);

stompClient.connect({}, function(frame) {
    stompClient.subscribe('/topic/stock', function(stockPrice) {
        // 받아온 주식 시세를 처리하는 로직 구현
        updateStockPriceUI(stockPrice);
    });
});

위 코드는 WebSocket을 통해 /updates 엔드포인트로 연결하고, /topic/stock에 등록된 주식 시세를 수신하여 UI를 업데이트 하는 예시입니다.

이렇게 함으로써, 스프링 프레임워크를 활용하여 실시간 주식 시세를 업데이트하는 기능을 구현할 수 있습니다.

위 내용은 스프링 프레임워크를 사용하여 WebSocket을 활용한 실시간 데이터 통신에 대한 간략한 예시이며, 상세한 구현 방법 및 환경에 따라 추가적인 설정이 필요할 수 있습니다.

관련자료: Spring WebSocket Documentation