Я получаю статус 200 при подключении к websocket, но это ошибка?
моя ошибка отображается в консоли браузера:
"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 session) для запуска? Не код 200 хорошо?
4 ответов
пожалуйста, проверьте http://procbits.com/connecting-to-a-sockjs-server-from-native-html5-websocket!
после добавления /websocket
(на Ваш URL), это даст вам ошибку
не удалось проанализировать значение заголовка Origin [null]
;) , который, в свою очередь, приведет вас к этой ссылке.
вам придется добавить .setAllowedOrigins("*")
на addHandler()
метод, и тогда он мог, наконец, работать!
посмотреть спецификация . Сервер должен ответить 101
для изменения протокола сигнала от http
to ws
.
для таких парней, как я, которые используют angular + springboot и получили эту ошибку. проверьте, включена ли переадресация или переадресация всех запросов конечных точек, отличных от api, обратно в индекс.формат html. например:
@RequestMapping(value = "/**/{[path:[^\.]*}")
public String redirect() {
// Forward to home page so that route is preserved.
return "forward:/index.html";
}
Если вы это сделаете, отключите его, и вы получите 101