Meine Anwendung ist eine Spring-Start-App, die Spring WebSocket mit STOMP verwendet. Alle Konfigurationen funktionieren gut in meinem lokalen. Aber den folgenden Fehler in der Cloud zu bekommen.WebSocket-Handshake fehlgeschlagen
Server-Fehler: -
oswsssDefaultHandshakeHandler ERROR - Hände schütteln konnte aufgrund ungültigen Header-Upgrade: null
Client-Fehler: - Im Browser: -
WebSocket-Verbindung zu 'WSS: //.example.com/ws/313/7pq61a2c/websocket' fehlgeschlagen: Fehler bei WebSocket Handshake: Unexpected Antwortcode: 400
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-messaging</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
</dependency>
I in AWS Wolke mit ELB eingesetzt. Meine Instanz läuft auf HTTP mit aktiviertem HTTPS in ELB. Ich verwende AWS Route 53 für meine Domain.
Ich habe 53
HTTPS-Zertifikat in der Route einen A-Eintrag mit dem LoadBalancer URL hinzugefügt ist für * .example.com.
ELB wird mit der folgenden konfiguriert ist,
HTTP - 80 - HTTP - 80
HTTPS - 443 - HTTP - 80
Ich habe Googling und fand, daß Ich muss das Leerlaufzeitlimit erhöhen. Der Benutzer kann die Sitzung 8 Stunden lang geöffnet lassen. Also, muss ich es für 8 Stunden konfigurieren? Gibt es irgendeine andere Konfiguration sollte in ELB getan werden?
Obwohl wir unsere EC2-Instanz unter HTTP ausführen, haben wir einen Filter, der Benutzer basierend auf dem X-Forward_Proto-Header zurück zu HTTPS umleitet.
In den Debug-Protokolle Protokolle, ich sehe http://example.com:80/ws/313/7pq61a2c/websocket
, dass der Grund sein könnte?
Wie kann ich Websocket konfigurieren, um mit https nicht http versuchen?
Dank