ブラウザのコンソールにエラーが表示されます:
"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は適切ではありませんか?
http://procbits.com/connecting-to-a-sockjs-server-from-native-html5-websocket を確認してください!
_/websocket
_を(URLに)追加すると、エラーが表示されます
Originヘッダー値の解析に失敗しました[null]
;)、それから そのリンク につながります。
.setAllowedOrigins("*")
メソッドにaddHandler()
を追加する必要があります。そうすれば、最終的には機能します!
specification をご覧ください。サーバーは101
で応答して、プロトコルがhttp
からws
に変更されたことを通知する必要があります。
私の別の答えとして:[ https://stackoverflow.com/a/53272666/2930417] [1]
Springboot 2 + STOMPを使用します。
.withSockJS()
を削除すると、すべて問題ありません。
理由はわかりませんが、うまくいきます。
これが遅すぎるかどうかはわかりませんが、私がつまずいた解決策は、スプリングブートサーバーで宣言したwebsocketエンドポイントの後に単に文字列/websocket
を追加することです。これにより、転送ロジックを保持し、接続してWebSocket接続を確立できます。
「ws:// localhost:32768/DspClusterWebServices/myHandler」が正しいかどうかを確認してください。
angular + springbootを使用してこのエラーが発生した私のような人々のために、リダイレクトを有効にしているかどうかを確認してください。
@RequestMapping(value = "/**/{[path:[^\\.]*}")
public String redirect() {
// Forward to home page so that route is preserved.
return "forward:/index.html";
}
無効にすると、101が表示されます