连接到websocket时我得到状态200,但这是一个错误?

我的错误显示在浏览器的控制台中:

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

我使用的是Spring Websockets 4.1.5Tomcat 8.0.18 。 我的WebSocketConfigurer实现类如下所示:

 @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(); } } 

我的testWebsocketClient.js尝试连接此代码,但错误代码为200:

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

我无法弄清楚下一步该尝试什么。 我以为这会导致afterConnectionEstablished(WebSocketSession会话)方法被触发? 代码200不好吗?

请查看http://procbits.com/connecting-to-a-sockjs-server-from-native-html5-websocket !

在追加/websocket (到您的URL)后,它会给您错误

无法解析Origin头值[null]

;),然后将引导您到那个链接 。

你必须将.setAllowedOrigins("*")添加到你的.setAllowedOrigins("*") addHandler()方法,然后它最终可以工作!

看看规格 。 服务器应以101响应,以便将协议从http更改为ws

如果’ws:// localhost:32768 / DspClusterWebServices / myHandler’正确,请检查一下。

对于像我这样使用angular + springboot并且出现此错误的人。 请检查您是否已启用重定向或将所有非api端点请求转发回index.html。 喜欢:

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

如果你这样做,禁用它,你将得到101