【问题标题】:Spring Web Sockets over AWS Application Load Balancer not workingAWS 应用程序负载均衡器上的 Spring Web 套接字不起作用
【发布时间】:2017-07-19 16:03:29
【问题描述】:

我已经为 spring 配置了 web 套接字,包括后端的 rabbit mq,我可以确认我可以向浏览器发送推送消息。

并在前端使用 SockJS。

到目前为止,我一直在使用经典的负载均衡器。 我正在尝试让 Web 套接字在 AWS 上工作。我已升级到 Application Load Balancer,但当我尝试将 Web 套接字连接到以下位置时仍然收到错误请求响应:

ws://XXXX.eu-west-1.elasticbeanstalk.com/spring/hello/870/sbmdv5tn/websocket

该调用仍然给出 400 Bad Request 响应...

我看到了

由于升级标头无效,握手失败:null

后端的错误...

【问题讨论】:

    标签: spring amazon-web-services elastic-load-balancer


    【解决方案1】:

    必须执行连接升级请求并且这些升级请求“每跳”发生的事实。

    在我的场景中,我在 tomcat 前面使用 apache 运行,为了让 tomcat 接收这些升级标头,我需要在 apache 代理上启用 web 套接字隧道,这样 apache 将简单地通过升级请求。

    更新: 尽管更好的解决方案是完全绕过 apache 并直接使用 tomcat - 即配置负载均衡器以路由到端口 8080 而不是端口 80。我怀疑弹性 beanstalk 默认情况下不这样做的原因是因为它需要负载均衡器- 如果您只想要单个实例,则不需要负载均衡器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-22
      • 2018-02-26
      • 2018-07-21
      • 1970-01-01
      • 2019-02-09
      • 2019-10-13
      • 2017-09-27
      • 2022-06-23
      相关资源
      最近更新 更多