스프링

스프링부트 Websocket을 쓸 때 테스트 안되는 경우

수연정 2024. 6. 3. 19:04

스프링 부트로 채팅 시스템을 만들기 위해 stomp방식으로 웹소켓을 구현하고

테스트를 해보려고

Postman, websocket king 으로 테스트를 하려고 했는데

 

테스트가 안됐다.

 

심지어 서버에는 아무 로그도 출력되지 않아서 뭐가 문제인지도 찾기 어려웠다.

 

원인은 sockJS였다.

첫번째로 SockJs를 빼보니 웹소켓 연결이 성공적으로 이뤄지는 것을 확인했다.

 

하지만 스프링 부트 웹소켓에서 sockJS가 빠진다면 아쉬울 것 같아서 버그 해결 방법을 찾아보던중에

 


@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws")
                .setAllowedOriginPatterns("*");
        registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.setApplicationDestinationPrefixes("/app");
        registry.enableSimpleBroker("/topic");
    }
}

 

이런식으로 두가지 방법 다 registry에 등록하면 해결 된다는 것을 발견했다!