所以,我试图从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
一起工作得很好。
如果有人遇到类似的问题,我将非常感谢有关我如何解决此问题的任何见解或建议。我在这里错过了一些额外的经纪人/弹簧应用程序配置吗?