Я получаю статус 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.


пожалуйста, проверьте, правильно ли "ws://localhost:32768/DspClusterWebServices/myHandler".


для таких парней, как я, которые используют angular + springboot и получили эту ошибку. проверьте, включена ли переадресация или переадресация всех запросов конечных точек, отличных от api, обратно в индекс.формат html. например:

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

Если вы это сделаете, отключите его, и вы получите 101