[스프링] 스프링 WebSocket의 푸시 알림 구독

이번 포스트에서는 스프링(Spring) 프레임워크를 사용하여 웹소켓(WebSocket)을 이용한 푸시 알림 구독에 대해 알아보겠습니다.

목차

  1. 소개
  2. 의존성 추가
  3. WebSocket 설정
  4. 메시지 핸들러 생성
  5. 구독 서비스 생성
  6. 컨트롤러 작성
  7. 결론

1. 소개

스프링 프레임워크WebSocket을 쉽게 사용할 수 있도록 지원합니다. WebSocket을 사용하면 실시간 통신을 위한 양방향 통신 채널을 생성할 수 있어 푸시 알림을 구독하고 브로드캐스팅 할 수 있습니다.

2. 의존성 추가

pom.xml에 아래 의존성을 추가합니다.

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

3. WebSocket 설정

웹소켓 관련 설정을 위한 WebSocketConfig 클래스를 생성합니다.

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

4. 메시지 핸들러 생성

WebSocket 메시지 핸들러를 생성하여 클라이언트로부터 메시지를 받아 처리합니다.

@Controller
public class MessageHandler {
    @MessageMapping("/send")
    @SendTo("/topic/notification")
    public Notification sendNotification(Notification notification) {
        return notification;
    }
}

5. 구독 서비스 생성

푸시 알림을 클라이언트에 구독할 때 사용할 SubscriptionService를 작성합니다.

@Service
public class SubscriptionService {
    public void subscribeToNotification(String userId) {
        // 특정 유저를 알림 구독 목록에 추가하는 로직
    }

    public void unsubscribeFromNotification(String userId) {
        // 알림 구독 취소 로직
    }
}

6. 컨트롤러 작성

웹 컨트롤러에서 구독 서비스를 이용하여 알림을 구독하거나 취소할 수 있도록 합니다.

@RestController
@RequestMapping("/notification")
public class NotificationController {
    @Autowired
    private SubscriptionService subscriptionService;

    @PostMapping("/subscribe/{userId}")
    public void subscribeToNotification(@PathVariable String userId) {
        subscriptionService.subscribeToNotification(userId);
    }

    @PostMapping("/unsubscribe/{userId}")
    public void unsubscribeToNotification(@PathVariable String userId) {
        subscriptionService.unsubscribeFromNotification(userId);
    }
}

7. 결론

웹소켓을 이용한 푸시 알림 구독은 스프링 프레임워크를 이용하여 간단하게 구현할 수 있습니다. 앞서 설명한 방법을 활용하여 실시간 알림 구독 기능을 손쉽게 구현할 수 있습니다.

더 많은 자세한 내용은 스프링 공식 문서를 참고하시기 바랍니다.