[스프링] 스프링 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");
}
}
클라이언트 측 구현
웹 애플리케이션의 클라이언트 측에서는 SockJS 및 STOMP 프로토콜을 사용하여 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을 통한 메시징