[스프링] 스프링 WebSocket 클라이언트 구현
스프링 프레임워크는 웹소켓(WebSocket)을 사용하여 서버와 클라이언트 간 실시간 양방향 통신을 구현할 수 있습니다. 이 기능을 사용하면 서버에서 클라이언트로 데이터를 푸쉬하거나, 클라이언트에서 서버로 데이터를 보낼 수 있습니다. 이를 통해 실시간 채팅, 주식 시세 업데이트 등의 기능을 구현할 수 있습니다.
이 글에서는 스프링 WebSocket 클라이언트를 구현하는 방법에 대해 알아보겠습니다.
스프링 WebSocket 클라이언트 라이브러리 추가
먼저, 스프링에서 제공하는 WebSocket 클라이언트를 사용하기 위해 아래와 같이 의존성을 추가합니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>5.3.9</version>
</dependency>
스프링 WebSocket 클라이언트 구현
WebSocket 클라이언트를 구현하기 위해 WebSocketStompClient
를 사용합니다.
import org.springframework.messaging.simp.stomp.StompSession;
import org.springframework.messaging.simp.stomp.StompClient;
import org.springframework.messaging.simp.stomp.StompHeaders;
import org.springframework.messaging.simp.stomp.StompSessionHandler;
import org.springframework.messaging.simp.stomp.StompSessionHandlerAdapter;
public class MyWebSocketClient {
public static void main(String[] args) {
StompClient stompClient = new WebSocketStompClient(new SockJsClient(
Arrays.asList(new WebSocketTransport(new StandardWebSocketClient()))));
stompClient.setMessageConverter(new MappingJackson2MessageConverter());
StompSessionHandler sessionHandler = new MyStompSessionHandler();
stompClient.connect("ws://localhost:8080/mywebsocketendpoint", sessionHandler);
}
private static class MyStompSessionHandler extends StompSessionHandlerAdapter {
// handle methods for connect, disconnect, and errors
}
}
위 코드에서 MyStompSessionHandler
클래스를 통해 웹소켓 세션 이벤트를 처리할 수 있습니다.
스프링 WebSocket 클라이언트 사용
WebSocket 클라이언트를 사용하여 서버와의 연결, 메시지 수신 등의 작업을 수행할 수 있습니다.
stompSession.subscribe("/topic/mytopic", new StompFrameHandler() {
@Override
public Type getPayloadType(StompHeaders headers) {
return MyMessage.class;
}
@Override
public void handleFrame(StompHeaders headers, Object payload) {
MyMessage message = (MyMessage) payload;
// handle the received message
}
});
stompSession.send("/app/mymessageendpoint", myMessage);
위 코드에서 /topic/mytopic
으로 구독(subscribe)하고, /app/mymessageendpoint
로 메시지를 보내는(send) 예시가 나와 있습니다.
이제 스프링의 WebSocket 클라이언트를 사용하여 서버와 양방향 통신을 구현하는 방법에 대해 알아보았습니다. 따라서 스프링에서 제공하는 WebSocket 기능을 이용하여 다양한 실시간 기능을 구현할 수 있게 되었습니다.