[스프링] 스프링 WebSocket과 푸시 알림

이 글에서는 스프링 프레임워크를 사용하여 웹소켓(WebSocket)과 푸시 알림(Push Notification)을 구현하는 방법에 대해 알아보겠습니다. 웹소켓을 통해 실시간으로 데이터를 주고받고, 푸시 알림을 이용하여 사용자에게 실시간으로 정보를 제공할 수 있습니다.

WebSocket이란?

웹소켓은 HTTP 프로토콜을 기반으로 하는 실시간 양방향 통신을 가능케 하는 프로토콜입니다. 이를 통해 클라이언트와 서버 간에 양방향 통신이 가능하며, 실시간으로 데이터를 주고받을 수 있습니다.

스프링 WebSocket 설정

먼저, 스프링 프로젝트에 WebSocket을 설정해야 합니다. 이를 위해 @EnableWebSocketMessageBroker 어노테이션을 사용하여 WebSocket 메시지 브로커를 활성화하고, 구성 클래스에 WebSocket 구성을 추가해야 합니다.

@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").withSockJS();
    }
}

위의 예제는 스프링 부트에서 WebSocket을 구성하는 예제 코드입니다. configureMessageBroker 메서드에서는 메시지 브로커를 설정하고, registerStompEndpoints 메서드에서는 STOMP 엔드포인트를 등록합니다.

클라이언트 측 구현

클라이언트 측에서는 웹소켓을 사용하여 서버와 통신하는 코드를 작성해야 합니다. 보통 JavaScript나 Angular, React와 같은 프레임워크를 사용하여 클라이언트 측을 구현합니다.

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

stompClient.connect({}, function(frame) {
    console.log('Connected: ' + frame);
    stompClient.subscribe('/topic/pushNotifications', function(notification) {
        alert(JSON.parse(notification.body).message);
    });
});

위의 예제는 JavaScript를 사용하여 웹소켓을 활용한 클라이언트 구현 예제입니다. /ws 엔드포인트를 통해 웹소켓 연결을 설정하고, /topic/pushNotifications 구독을 통해 실시간으로 푸시 알림을 받을 수 있습니다.

이렇게 스프링을 이용하여 웹소켓과 푸시 알림을 구현할 수 있습니다. 실시간으로 데이터를 주고받거나 사용자에게 실시간 알림을 전달해야 하는 경우에 유용하게 활용할 수 있는 기술입니다.