2015-04-23 7 views
19

Benim hata benim tarayıcısının konsolda gösterir: Ben Spring Websockets 4.1.5 ve Tomcat 8.0.18 kullanıyorumWeb bağlantısına bağlanırken bir durum 200 alıyorum, ama bu bir hatadır?

"WebSocket connection to 'ws://localhost:32768/DspClusterWebServices/myHandler' failed: Unexpected response code: 200"

. Bu kod ile bağlanmaya çalışır

@Configuration 
@Controller 
@EnableWebSocket 
public class WebSocketConfig implements WebSocketConfigurer 
{ 
    class MyHandler implements WebSocketHandler 
    { 
     @Override 
     public void afterConnectionEstablished(WebSocketSession session) throws Exception 
     { 
     System.out.println("afterConntectionEstablished called"); 
     } 

     ...implements rest of functions with a System.out.println and false for supportsPartialMessages() 

     } 
    } 

    @Override registerWebSocketHandlers(WebSocketHandlerRegistry registry) 
    { 
     registry.addHandler(myHandler(), "myHandler").withSockJS(); 
    } 

    @Bean 
    public WebSocketHandler myHandler() 
    { 
     return new MyHandler(); 
    } 
} 

Benim testWebsocketClient.js ancak 200 hata kodu vardır: My WebSocketConfigurer uygulama sınıfı benziyor sonraki denemek için anlamaya olamaz

websocket = new WebSocket("ws://localhost:8080/myApp/myHandler"); 

. Bunun, AfterConnectionEstablished (WebSocketSession oturumu) yönteminin tetiklenmesine neden olacağını düşündüm. Kod 200 iyi değil mi?

+1

101 özellikle plz, şuna http://stackoverflow.com/a/14555549/592355 bir göz atın alacak: "gelince senin "Beklenmeyen yanıt kodu: 200" hatası, istemci tarafında kullandığınız WebSocket URL'sinin geçerli bir sunucu tarafı komut dosyasına işaret etmediğini tahmin ediyorum, ancak daha fazla bilgi olmadan yorum yapmak zor. " – xerx593

+0

Hangi bilgilere ihtiyaç var? Tomcat 8.0.18 kullanıyorum ve Tomcat kurulumunun lib klasöründe websocket-api.jar ve tomcat-websocket.jar'ı görebiliyorum ... – smuggledPancakes

+0

Denetleyici ek açıklamalarına ne dersiniz? (WebSocket örneklerinde değil) ... bunun karışabileceğini düşünmüyor musunuz? – xerx593

cevap

19

Lütfen http://procbits.com/connecting-to-a-sockjs-server-from-native-html5-websocket'u kontrol edin! Eğer (URL'nize) /websocket eklemek sonra

, size hata

verecek

Menşei başlık değerini [boş]

ayrıştırma başarısız;) , bu daha sonra sırayla olacak that link'a yönlendirirsiniz.

.setAllowedOrigins("*") yöntemini addHandler() yöntemine eklemeniz gerekecek ve sonra bu işe yarayacak!

+6

Ek olarak, .withSockJs() çağrısını sunucudan ve/websocket istemcisinden kaldırırsanız, bu şekilde çalışır! Zor şeyler, umarım bu gelecekte insanlara yardımcı olur! Bir çözüm bulmama yardım ettiğin için tekrar xerx593 teşekkürler! – smuggledPancakes

7

specification'a bir bakın. Sunucu, http'dan ws'a sinyal protokol değişikliği için 101 ile yanıt vermelidir.

+0

Hala ne yapacağımı bilemiyorum, bu link 200 kodunun daha ayrıntılı bir açıklamasını veriyor: http://stackoverflow.com/questions/18190644/what-does-websocket-yükseltme-istek-başarısız-istisna-in-a-bağlamında-of-a-bağlam Sunucu tarafında bir şey yanlış olmalı, ama ben Tomcat 8.0 kullanıyorum emin değilim. 18 – smuggledPancakes

2

'ws: // localhost: 32768/DspClusterWebServices/myHandler' öğesinin doğru olup olmadığını kontrol edin.

0

Benim gibi açısal + springboot kullanan ve bu hatayı alan adamlar için. lütfen yönlendirmeyi etkinleştirdiyseniz veya tüm api olmayan uç nokta isteklerini index.html'ye geri döndürüp iletmediğinizi kontrol edin. gibi:

@RequestMapping(value = "/**/{[path:[^\\.]*}") 
    public String redirect() { 
     // Forward to home page so that route is preserved. 
     return "forward:/index.html"; 
    } 

Bunu yaparsanız, devre dışı ve

İlgili konular