[스프링] 스프링 WebSocket의 푸시 알림 구독
이번 포스트에서는 스프링(Spring) 프레임워크를 사용하여 웹소켓(WebSocket)을 이용한 푸시 알림 구독에 대해 알아보겠습니다.
목차
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. 결론
웹소켓을 이용한 푸시 알림 구독은 스프링 프레임워크를 이용하여 간단하게 구현할 수 있습니다. 앞서 설명한 방법을 활용하여 실시간 알림 구독 기능을 손쉽게 구현할 수 있습니다.
더 많은 자세한 내용은 스프링 공식 문서를 참고하시기 바랍니다.