所以,我试图从 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 配置吗?