我的应用程序是一个Spring引导应用程序,它使用Spring WebSocket和STOMP。所有配置在我当地都运行良好。但是在云中获得以下错误。
服务器错误: -
ERROR o.s.w.s.s.s.DefaultHandshakeHandler - 由于握手失败 无效的升级标题:null
客户端错误: - 在浏览器中: -
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>
我使用ELB部署在AWS云中。我的实例在HTTP上运行,并在ELB中启用了HTTPS。我将AWS route 53用于我的域名。
我添加了一个&#39; A&#39;使用路由53中的LoadBalancer URL进行记录。
HTTPS证书适用于* .example.com。
ELB配置如下
HTTP - 80 - HTTP - 80
HTTPS - 443 - HTTP - 80
我做谷歌搜索,发现我需要增加空闲超时。用户可以将会话保持打开8小时。 那么,我需要配置它8个小时吗? 是否应该在ELB中进行任何其他配置?
虽然我们在HTTP上运行我们的EC2实例,但我们有一个过滤器,它根据X-Forward_Proto标题将用户重定向回HTTPS。
在调试日志日志中,我看到http://example.com:80/ws/313/7pq61a2c/websocket
这可能是原因吗?
如何配置websocket以尝试使用https而非http?
由于
答案 0 :(得分:0)
我认为问题是AWS ELB目前不支持Web套接字。
您可以查看以下链接: