통합 테스트에 spring-websocket RestTemplateXhrTransport를 사용하려고하는데 작동하지 못합니다.spring-websocket의 RestTemplateXhrTransport가 작동합니까?
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/socket").withSockJS().setClientLibraryUrl("../common/lib/sockjs.js");
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic/", "/user/");
registry.setApplicationDestinationPrefixes("/app", "/topic");
}
}
내가 일할 수있는 다음 코드를 예상했을 것이다
하지만, 단지 시간이 초과 대기 :
서버는별로 - 책 구성에 스프링 웹 소켓 (4.1-RELEASE)로 설정되어 프리 엠블 (preamble). 내가 네트워크 트래픽을 보면, 나는 프리앰블이 서버에서 전송되는 것을 볼 수 있지만 클라이언트는 헤더를 읽은 후 데이터를 기다리는 달려 있습니다 : 나는 Tomcat 응용 프로그램 서버를 사용하고
List<Transport> transports = new ArrayList<>();
RestTemplate restTemplate = new RestTemplate();
RestTemplateXhrTransport xhrTransport = new RestTemplateXhrTransport(restTemplate);
// This makes it work, but that is xhr-polling, and I want xhr-streaming.
//xhrTransport.setXhrStreamingDisabled(true);
transports.add(xhrTransport);
SockJsClient sockJsClient = new SockJsClient(transports);
AbstractWebSocketHandler webSocketHandler = new AbstractWebSocketHandler() {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
System.out.println("connected");
}
};
sockJsClient.doHandshake(webSocketHandler, new WebSocketHttpHeaders(), new URI("http://localhost:8080/socket"))
.get(3000, TimeUnit.SECONDS);
. 7.0.55와 8.0.12 모두에서 작동하지 않습니다.
또한 spring-websockets-portfolio 샘플의 IntegrationPortfolioTests를 살펴 보려고했습니다. WebSocketTransport를 기본 전송으로 추가하고 RestTemplateXhrTransport를 사용하는 줄을 남겨 두는 setup-method의 줄을 주석으로 처리하면이 테스트 사례가 작동하지 않습니다.