Websocket over Spring Netflix Zuul



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

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

是否有合理的替代方案?比如编写自己的ZuulFilter?

既然没有答案,这就是我能找到的关于使用Zuul与WebSockets。

我的问题在某种意义上是不准确的,我正在使用Sock.js,当通过Zuul连接Sock.js时正在接收:

405 -请求错误

响应,这立即使它退回到xhr- streaming,这是当它能够建立连接时,所以

不可以在Zuul上使用Websocket协议

但是我仍然面临第二个问题,即使我能够使用后备Sock.js传输连接,连接也会被代理不断关闭。幸运的是,Sock.js要求服务器每10秒"发送"心跳(默认情况下),因此调整ribbon和hystrix超时,您可以在没有特殊onerror重新连接逻辑的情况下保持"Sock.js连接"。如参考文献所述:

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 60000带:ConnectTimeout: 3000ReadTimeout: 60000

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

这仍然不是原生的Websocket支持。

我仍然在寻找合理的替代Zuul代理,或一些建议,我可以做什么其他步骤,使工作

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

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

注:不安全,连接重建等

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

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

最新更新