1

所以,我试图从 Rossen Stoyanchev 的一个很好的例子中复制 sockJs 代码:https ://github.com/rstoyanchev/spring-websocket-portfolio/blob/master/src/test/java/org/springframework/samples/投资组合/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.

如果有人遇到过类似的问题,我将不胜感激有关如何解决此问题的任何见解或建议。我在这里缺少一些额外的代理/spring-app 配置吗?

4

0 回答 0