Yeni (sürüm 4.2 sürümü) java STOMP istemci desteğiyle oynarım. Başlangıç noktam başlangıç kılavuzudur (Using WebSocket to build an interactive web application).WebSocketStompClient, SockJS bitiş noktasına bağlanmayacak
aşağıdaki uç nokta örnekte sağlanır: başarıyla tarayıcı istemcisi kullanarak bağlayabilirsiniz
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").withSockJS();
}
. kullanarak java Stomp istemcisi kullanarak bu bitiş noktasına bağlanmaya çalışılırken aşağıdaki:
08:56:30.629 [SimpleAsyncTaskExecutor-1] DEBUG o.s.m.simp.stomp.DefaultStompSession - Failed to connect session id=4e6737da-8f68-691d-375f-9e46f48bc149 javax.websocket.DeploymentException: The HTTP response from the server [HTTP/1.1 200 OK ] did not permit the HTTP upgrade to WebSocket at org.apache.tomcat.websocket.WsWebSocketContainer.parseStatus(WsWebSocketContainer.java:637) ~[tomcat-embed-websocket-8.0.20.jar:8.0.20] at org.apache.tomcat.websocket.WsWebSocketContainer.processResponse(WsWebSocketContainer.java:621) ~[tomcat-embed-websocket-8.0.20.jar:8.0.20] at org.apache.tomcat.websocket.WsWebSocketContainer.connectToServer(WsWebSocketContainer.java:309) ~[tomcat-embed-websocket-8.0.20.jar:8.0.20] at org.springframework.web.socket.client.standard.StandardWebSocketClient$1.call(StandardWebSocketClient.java:152) ~[spring-websocket-4.2.0.BUILD-SNAPSHOT.jar:4.2.0.BUILD-SNAPSHOT] at org.springframework.web.socket.client.standard.StandardWebSocketClient$1.call(StandardWebSocketClient.java:149) ~[spring-websocket-4.2.0.BUILD-SNAPSHOT.jar:4.2.0.BUILD-SNAPSHOT] at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0] at java.lang.Thread.run(Unknown Source) [na:1.8.0]
Araştırmamız sonucunda Sunucu son nokta ayarlarını değiştirmiş TomcatWebSocketTestServer.java dayalı:
WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
stompClient.setMessageConverter(new StringMessageConverter());
String url = "ws://127.0.0.1:8080/hello";
ListenableFuture<StompSession> future = stompClient.connect(url,myHandler);
Ben şu istisna karşılaşmak
RequestUpgradeStrategy upgradeStrategy = new TomcatRequestUpgradeStrategy();
registry.addEndpoint("/hello")
.setHandshakeHandler(new DefaultHandshakeHandler(upgradeStrategy))
.setAllowedOrigins("*");
şimdi bağlanabilir, ancak tarayıcı istemcileri olamaz: StompWebSocketIntegrationTests.java kullanılan aşağıdaki gibi. tarayıcı istemcileri tekrar bağlanabilir
RequestUpgradeStrategy upgradeStrategy = new TomcatRequestUpgradeStrategy();
registry.addEndpoint("/hello")
.setHandshakeHandler(new DefaultHandshakeHandler(upgradeStrategy))
.setAllowedOrigins("*")
.withSockJs();
ama java istemci tekrar orijinal hata şudur:
GET http://localhost:8080/hello/info 404 (Not Found)
Ben son nokta yapılandırmasına() .withSockJs eklerseniz.
Aynı son noktayı iki istemci arasında paylaşabilmeli miyim veya bu durumda iki ayrı uç noktayı yapılandırmalı mıyım?
Teşekkürler, cevabınız yardımcı oldu. Cevabımı, geri bildiriminize dayanarak yeni yapılandırmayla güncelledim. Üzgünüm, henüz cevaplayamıyorum (yeterli itibar puanı yok). – stacktrace