[스프링] 스프링 WebSocket의 서버 측 구현
서버 측 구현은 클라이언트의 연결을 수락하고, 메시지를 수신하며, 클라이언트에게 메시지를 보내는 것을 말합니다. 스프링 프레임워크는 WebSocketHandler 인터페이스와 @ServerEndpoint 어노테이션을 사용하여 서버 측 WebSocket을 구현할 수 있습니다.
2. WebSocketHandler를 사용한 서버 측 구현
WebSocketHandler를 구현하려면 TextWebSocketHandler 클래스를 확장하고, 필요한 메서드를 구현해야 합니다.
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class MyWebSocketHandler extends TextWebSocketHandler {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
// 클라이언트로부터 메시지 수신 시 처리 로직 구현
}
}
WebSocketHandler를 빈으로 등록하기 위해서는 WebSocketConfigurer를 구현하여 registerWebSocketHandlers() 메서드를 오버라이드 해야 합니다.
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyWebSocketHandler(), "/myHandler");
}
}
WebSocketConfig 클래스는 @Configuration 어노테이션을 사용하여 구성 클래스로 지정하고, Spring 애플리케이션이 스캔할 수 있도록 패키지에 등록되어야 합니다.
3. @ServerEndpoint 어노테이션을 사용한 서버 측 구현
@ServerEndpoint 어노테이션을 사용하여 WebSocket을 구현할 수도 있습니다. 먼저, javax.websocket.server.ServerEndpoint를 import하고, 클래스에 어노테이션을 추가하여 WebSocket 엔드포인트를 지정해야 합니다.
import javax.websocket.server.ServerEndpoint;
import javax.websocket.OnOpen;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.Session;
@ServerEndpoint("/myEndpoint")
public class MyWebSocketServer {
@OnOpen
public void onOpen(Session session) {
// 클라이언트 연결 시 처리 로직 구현
}
@OnClose
public void onClose(Session session) {
// 클라이언트 연결 종료 시 처리 로직 구현
}
@OnMessage
public void onMessage(String message, Session session) {
// 클라이언트로부터 메시지 수신 시 처리 로직 구현
}
}
4. 요약
이 포스트에서는 스프링 프레임워크를 사용하여 서버 측 WebSocket을 구현하는 방법에 대해 살펴보았습니다. WebSocketHandler 인터페이스와 @ServerEndpoint 어노테이션을 사용하여 서버 측 WebSocket을 손쉽게 구현할 수 있습니다.