Proxy 配置Jetty WebSocket客户端以使用代理

Proxy 配置Jetty WebSocket客户端以使用代理,proxy,websocket,jetty,Proxy,Websocket,Jetty,我还没有找到任何解决办法。Jetty似乎还不支持此功能。我可能错了,所以请开导我 我有一个非常简单的Java客户端,它连接到localhost:8080上的Java服务器。我想在它们之间添加一个透明代理,以模拟我们可以在公司的专用网络中找到的内容。更新:2017年5月 从Jetty 9.4.0及更高版本开始,本机Jetty WebSocketClient通过Jetty HttpClient支持代理 其工作原理是声明一个HttpClient及其代理配置,然后将其交给用户使用 这仅适用于以下情况:

我还没有找到任何解决办法。Jetty似乎还不支持此功能。我可能错了,所以请开导我


我有一个非常简单的
Java
客户端,它连接到
localhost:8080
上的
Java
服务器。我想在它们之间添加一个透明代理,以模拟我们可以在公司的专用网络中找到的内容。

更新:2017年5月

从Jetty 9.4.0及更高版本开始,本机Jetty WebSocketClient通过Jetty HttpClient支持代理

其工作原理是声明一个HttpClient及其代理配置,然后将其交给用户使用

这仅适用于以下情况:

  • HTTP/1.1升级到WebSocket
  • 原生Jetty WebSocket API
这不适用于以下情况:

  • HTTP/2(目前还没有针对HTTP/2上WebSocket的规范)
  • JSR356 javax.websocket(有一些想法是对JSR356 ClientContainer进行API破坏性更改,以允许通过构造函数传入Jetty HttpClient,通过这样说让我们知道这对您来说是否可行)
原始答案

对于Jetty 9,Jetty原生WebSocket客户端或JSR-356(javax.WebSocket)客户端实现都不支持代理

此支持计划用于Jetty 10(正在跟踪Servlet 4),并将导致Jetty中整个客户端库套件的完全返工,以获得对以下方面的同等支持:

  • HTTP/1.1
  • HTTP/2(本机/直接)
  • HTTP/1.1升级到HTTP/2(h2c)
  • HTTP/1.1升级到WebSocket
  • HTTP/2 websocket频道(目前处于规范草案中)
  • 代理支持
  • Cookie支持
  • 等等
由于JSR-356支持要求,Jetty上现有的WebSocket客户端实现是独立的

现有WebSocket客户端没有利用Jetty 9.x中现有的Jetty HttpClient。如果它做到了,那么代理支持可能在非常有限的场景下工作

这是一个低优先级的特性请求,因为到目前为止几乎没有支持WebSocket的现有代理(实际上,它们通常不支持HTTP/1.1升级)。甚至Jetty自己的服务器端代理目前也不支持HTTP/1.1升级的连接。

根据中的图2,如果您试图使用透明的代理,则不需要在客户端提供代理支持。另一方面,显式代理要求客户端库支持代理


如果代理是透明的,Jetty WebSocket客户端不会有任何问题。

什么java客户端?什么样的代理?http/1.1?http/2?http/1.1上的websocket?http/2上的websocket?透明的?反向?服务器端?客户端?使用Jetty的WebSocket Java客户端。见标题。目前正在使用HTTP/1.1,但我不认为它会对我的问题产生什么影响。现在我只想设置一个透明的proxy.Upvoting。在当前状态下,这个问题带来了有价值的答案。这是否意味着我仍然可以向远程代理发送消息,但不能使用Jetty自己创建一个?谢谢你的详细回答。有没有一个例子说明如何通过SSL实现这一点?在握手之前,TCP连接关闭了,这让我们很开心。