我的应用程序是一个Spring应用程序,它使用带有STOMP的Spring。在我的本地,所有的配置都很好。但是在云中得到以下错误。
服务器错误:-
错误o.s.w.s.DefaultHandshakeHandler-由于升级标头无效导致握手失败: null
客户端错误:-在浏览器中:-
到'wss://.example.com/ws/313/7pq61a2c/websocket‘的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路线53作为我的域名。
我已经添加了一个'A‘记录与LoadBalancer网址在53路线。
HTTPS证书用于*.example.com。
ELB配置如下所示:
HTTP - 80 -HTTP-80 HTTPS - 443 -HTTP-80
我谷歌了一下,发现我需要增加空闲超时时间。用户可能会将会话打开8小时。那么,我需要配置它8个小时吗?在ELB中还有其他的配置吗?
虽然我们在HTTP上运行我们的EC2实例,但是我们有一个过滤器,它将用户重定向回基于X_Proto头的HTTPS。
在调试日志中,我看到了http://example.com:80/ws/313/7pq61a2c/websocket
这就是原因吗?
我如何配置websocket来尝试使用https而不是http?
谢谢
发布于 2016-07-11 02:55:30
我认为问题在于AWS目前不支持网络套接字。
您可以查看以下链接:
希望这能有所帮助。
https://stackoverflow.com/questions/38147668
复制相似问题