250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 오블완
    • 티스토리챌린지
    • 뉴스앱

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/spring, spring boot

    [Spring Boot] 서버 시작 시 WebSocket 연결 client java 로직 구현

    2024. 2. 8. 11:35
    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
      '개발/spring, spring boot' 카테고리의 다른 글
      • [Spring Data JPA] Cannot do an operation on a closed statement 오류 해결
      • Spring Boot에서 JPA 사용하기
      • [Spring Boot] mariadb-java-client vs mysql-connector-j
      • [Spring Boot][Mybatis][MariaDB] Bulk Update 방법
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바