2016-07-01 258 views
0

我的應用程序是一個使用Spring WebSocket和STOMP的Spring啓動應用程序。所有的配置在我的本地工作正常。但在雲中獲得以下錯誤。WebSocket握手失敗

服務器錯誤: -

錯誤oswsssDefaultHandshakeHandler - 握手失敗,原因是 無效的升級頭:空

客戶端錯誤: - 在瀏覽器中: -

WebSocket連接到 'WSS://.example.com/ws/313/7pq61a2c/websocket' 失敗: 錯誤的WebSocket握手期間:意外的響應代碼: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> 

我部署在AWS雲與ELB。我的實例在ELB中啓用HTTPS的情況下運行。我爲我的域使用AWS路由53。

我在航線增加了一個 'A' 記錄與負載平衡器URL 53

HTTPS證書是* .example.com的。

ELB被配置了以下內容,

HTTP - 80 - HTTP - 80

HTTPS - 443 - HTTP - 80

我也使用Google,發現我需要增加空閒超時。用戶可能會保持會話8小時。 那麼,我需要配置8小時嗎? ELB中是否有其他配置?

雖然我們在HTTP上運行我們的EC2實例,但我們有一個過濾器,它可以根據X-Forward_Proto標頭將用戶重定向回HTTPS。

在調試日誌日誌,我看到http://example.com:80/ws/313/7pq61a2c/websocket

莫非是什麼原因呢?

如何配置websocket使用https不是http嘗試?

感謝

回答