2016-07-01 20 views
0

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

Antwort

Verwandte Themen