我已经配置了带有网络套接字的弹簧,包括后端的兔子mq,我可以确认我可以将推送消息发送到浏览器。
在前端使用SockJS。
到目前为止,我一直在使用经典的负载均衡器。 我正在尝试让Web套接字在AWS上运行。我已升级到Application Load Balancer但在尝试建立Web套接字连接时仍然收到Bad Request响应:
WS://XXXX.eu-west-1.elasticbeanstalk.com/spring/hello/870/sbmdv5tn/websocket
该呼叫仍然提供400 Bad Request响应......
我看到了
由于升级标头无效,握手失败:null
后端的错误......
答案 0 :(得分:0)
必须执行以下事实:请求连接升级,并且这些升级请求“按跳”发生。
在我的场景中,我在tomcat前面运行apache,为了让tomcat接收这些升级头,我需要在apache代理上启用web套接字隧道,这样apache就会简单地通过升级请求。
更新: 虽然更好的解决方案是完全绕过apache并直接进入tomcat - 这是配置负载均衡器路由到端口8080而不是端口80.我怀疑弹性beanstalk默认不这样做的原因因为它需要负载均衡器 - 如果您只想要单个实例,则不需要负载均衡器。