728x90
반응형
클라이언트에서 WebSocket 연결을 서버 시작 시에 자동으로 하도록 설정하려면, Spring Boot의 애플리케이션 이벤트 리스너를 사용할 수 있습니다. 이 방법을 사용하면, 애플리케이션 컨텍스트가 완전히 로드되고, 서버가 시작된 직후에 클라이언트 연결이 이루어집니다.
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.socket.client.standard.StandardWebSocketClient;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
import org.springframework.web.socket.TextMessage;
@SpringBootApplication
public class WebSocketClientApplication {
public static void main(String[] args) {
SpringApplication.run(WebSocketClientApplication.class, args);
}
@Bean
public CommandLineRunner runWebSocketClient() {
return args -> {
StandardWebSocketClient client = new StandardWebSocketClient();
WebSocketSession session = client.execute(new TextWebSocketHandler() {
@Override
protected void handleTextMessage(WebSocketSession session, TextMessage message) {
System.out.println("Received message: " + message.getPayload());
}
}, "ws://localhost:8080/ws").get();
session.sendMessage(new TextMessage("Hello from client!"));
// 연결을 유지하고 싶다면 session.close()를 호출하지 않는다
};
}
}
해당 코드는 Spring Boot 애플리케이션이 시작될 때 CommandLineRunner를 사용하여 WebSocket 클라이언트 연결 로직을 실행합니다. CommandLineRunner는 애플리케이션의 커맨드 라인을 시작할 때 실행되는 콜백 인터페이스로, 여기서는 WebSocket 클라이언트를 초기화하고 서버에 연결하는데 사용됩니다.
이 방식을 사용하면, 애플리케이션 시작 시 자동으로 WebSocket 서버에 연결을 시도하게 됩니다. 연결이 성공적으로 이루어지면, 클라이언트는 서버로부터 메시지를 수신할 준비가 되고, 서버에 메시지를 보낼 수도 있습니다.
주의할 점은, 이 구현에서는 연결이 영구적으로 유지되어야 한다면 session.close()를 호출하지 않아야 합니다. 연결을 종료해야 하는 경우에는 적절한 시점에 세션을 종료해야 합니다.
728x90
반응형
'개발 > spring, spring boot' 카테고리의 다른 글
[Spring Data JPA] Cannot do an operation on a closed statement 오류 해결 (0) | 2024.02.16 |
---|---|
Spring Boot에서 JPA 사용하기 (0) | 2024.02.15 |
[Spring Boot] mariadb-java-client vs mysql-connector-j (0) | 2024.02.07 |
[Spring Boot][Mybatis][MariaDB] Bulk Update 방법 (0) | 2024.02.07 |
[Spring Integration][Spring Boot Test] Socket 통신 테스트 시 빈 데이터 전송 해결 (0) | 2024.02.05 |