Spring WebSocketStompClient不会使用SockJsClient进行连接

时间:2016-04-25 16:50:34

标签: java spring spring-websocket spring-messaging

所以,我试图从Rossen Stoyanchev的一个很好的例子中复制sockJs代码:https://github.com/rstoyanchev/spring-websocket-portfolio/blob/master/src/test/java/org/springframework/samples/portfolio/web/load/StompWebSocketLoadTestClient.java

但是,我遇到了一个问题,即它不会连接到Stomp端点。执行在stompClient.connect()冻结,不再显示调试消息,甚至不显示处理程序。

这是我的代码:

public void waitForGreet() throws Exception {

    String stompUrl = "ws://127.0.0.1:61613/stomp";

    StandardWebSocketClient webSocketClient = new StandardWebSocketClient();

    HttpClient jettyHttpClient = new HttpClient();
    jettyHttpClient.setMaxConnectionsPerDestination(1000);
    jettyHttpClient.setExecutor(new QueuedThreadPool(1000));
    jettyHttpClient.start();

    List<Transport> transports = new ArrayList<>(2);
    transports.add(new WebSocketTransport(webSocketClient));
    transports.add(new JettyXhrTransport(jettyHttpClient));

    ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
    taskScheduler.afterPropertiesSet();

    SockJsClient sockJsClient = new SockJsClient(transports);
    WebSocketStompClient stompClient = new WebSocketStompClient(sockJsClient);
    //WebSocketStompClient stompClient = new WebSocketStompClient(webSocketClient);
    stompClient.setMessageConverter(new StringMessageConverter(Charset.defaultCharset()));
    stompClient.setDefaultHeartbeat(new long[]{0, 0});
    stompClient.setTaskScheduler(taskScheduler);

    stompClient.connect(stompUrl, handler, "localhost", 61613);
}

如果我使用WebSocketStompClient,一切正常。

可以使用ActiveMQ重现该问题,因此我认为它不是Artemis特有的。我使用Spring Boot运行这个应用程序,我没有专门配置任何东西,它与WebSocketStompClient一起工作得很好。

如果有人遇到类似的问题,我将非常感谢有关我如何解决此问题的任何见解或建议。我在这里错过了一些额外的经纪人/弹簧应用程序配置吗?

0 个答案:

没有答案