连接到websocket时我得到状态200,但这是一个错误?
我的错误显示在浏览器的控制台中:
"WebSocket connection to 'ws://localhost:32768/DspClusterWebServices/myHandler' failed: Unexpected response code: 200"
我使用的是Spring Websockets 4.1.5
和Tomcat 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