【问题标题】:Websocket over Spring Netflix Zuul基于 Spring 的 Websocket Netflix Zuul
【发布时间】:2015-11-11 18:23:01
【问题描述】:

关于这个问题:https://github.com/spring-cloud/spring-cloud-netflix/issues/163 是否有合理的方法来设置 Spring Cloud Zuul 反向代理以与 Websockets 一起使用?

我能够将代理设置到 websocket 端点并成功地从客户端连接到它,但由于连接超时非常短,连接会不断关闭。在这一点上我最关心的是 Zuul 服务自动发现。尝试使用与参考中描述的file downloads 类似的解决方法是否有意义,尽管连接超时更大?

是否有任何合理的选择?喜欢自己写 ZuulFilter 吗?

【问题讨论】:

    标签: spring spring-cloud netflix-zuul


    【解决方案1】:

    由于没有答案,这就是我能够找到的关于将 Zuul 与 WebSockets 结合使用的信息。

    我的问题是不准确的,因为我使用的是 Sock.js,并且当通过 Zuul Sock.js 连接时正在接收:

    405 - 错误请求

    response,它立即回退到 xhr-straming,并且当它能够建立连接时,所以

    不,不可能在 Zuul 上使用 Websocket 协议。

    但我仍然面临第二个问题,即使我能够使用后备 Sock.js 传输进行连接,代理也会不断关闭连接。幸运的是,Sock.js 要求服务器每 10 秒“发送”一次心跳(默认情况下),因此调整功能区和 hystrix 超时,您无需特殊的 onerror 重新连接逻辑即可维持“Sock.js 连接”。如参考中所述:

    hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds:60000 丝带: 连接超时:3000 读取超时:60000

    我已将此超时设置为 Sock.js 使用时间的两倍 - 所以 20 秒。

    这仍然不是原生 Websocket 支持。

    我仍在为 Zuul 代理寻找合理的替代品,或者一些建议我可以采取哪些其他步骤来完成这项工作。

    【讨论】:

      【解决方案2】:

      一直在研究这个问题,我们有类似的要求,通过zuul服务器代理websocket连接。但要求略有不同,因为 websocket 连接将是“特殊的”,不需要像通过 zuul 发出的其他请求一样处理。

      以前使用 nodejs 和 http-proxy 很容易实现这一点。这是一个如何开始使用 java 和 Spring Boot 的示例:https://github.com/barrett-rob/java-websocket-reverse-proxy

      注意:没有安全性,连接重建等

      【讨论】:

        【解决方案3】:

        这个问题已经回答了,但以防万一有人来这里用 Zuul 寻找 Websockets 的解决方案:

        自 2.0 起,Zuul 正式支持此功能,文档如下:
        https://github.com/Netflix/zuul/wiki/Push-Messaging

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-04-15
          • 2017-11-02
          • 2016-06-15
          • 1970-01-01
          • 2018-08-25
          • 2021-09-07
          • 2016-09-30
          相关资源
          最近更新 更多