이번 포스트에서는 스프링 웹 소켓(Spring WebSocket)에 대해 알아보겠습니다. 웹 소켓은 실시간으로 양방향 통신을 위한 기술로, HTTP보다 가볍고 빠르며 커넥션을 유지하는 등의 특징이 있습니다. 스프링 웹 소켓은 이러한 웹 소켓을 스프링 애플리케이션에서 쉽게 사용할 수 있도록 지원합니다.
웹 소켓 핸들러 만들기
먼저, 웹 소켓 핸들러(WebSocket Handler)를 만들어보겠습니다. 웹 소켓 핸들러는 클라이언트와 서버 간의 웹 소켓 연결을 관리하고, 메시지를 주고받는 역할을 합니다.
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
// 웹 소켓 핸들러의 구현 내용
}
위의 코드는 TextWebSocketHandler를 상속받아 MyWebSocketHandler를 만드는 예시입니다. 실제로는 이 핸들러를 구현하여 연결 이벤트, 메시지 수신 이벤트 등을 처리할 수 있습니다.
스프링 구성 설정
다음으로, 스프링 구성 설정(Spring Configuration)에서 웹 소켓을 활성화하고 핸들러를 등록하는 작업이 필요합니다.
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/my-websocket-endpoint").setAllowedOrigins("*");
}
}
위의 코드에서는 WebSocketConfigurer를 구현하여 MyWebSocketHandler를 등록하는 방법을 보여줍니다. 또한, @EnableWebSocket을 사용하여 웹 소켓을 활성화하고 있습니다.
클라이언트 코드
마지막으로, 클라이언트 측에서 웹 소켓을 사용하는 방법을 보겠습니다.
var socket = new WebSocket("ws://localhost:8080/my-websocket-endpoint");
socket.onopen = function() {
console.log("웹 소켓 연결 열림");
};
socket.onmessage = function(event) {
console.log("메시지 수신: " + event.data);
};
socket.onclose = function() {
console.log("웹 솼켓 연결 닫힘");
};
위의 자바스크립트 코드는 클라이언트에서 웹 소켓을 사용하는 예시입니다. WebSocket 객체를 생성하여 서버의 웹 소켓 엔드포인트와 연결하고, 연결 이벤트, 메시지 수신 이벤트 등을 처리할 수 있습니다.
스프링 웹 소켓을 사용하여 실시간으로 양방향 통신을 구현하는 방법에 대해 간략히 알아보았습니다. 물론 실제 프로젝트에서는 더 다양한 기능을 활용하여 보다 복잡한 웹 소켓 기반 애플리케이션을 구현할 수 있습니다.