我还没有找到任何解决方案。似乎Jetty
尚不支持此功能。我可能错了所以请赐教。
我有一个非常简单的Java
客户端,它连接到Java
的{{1}}服务器。我想在它们之间添加一个透明的代理,以模拟我们在公司的专用网络中可以找到的内容。
答案 0 :(得分:9)
更新:2017年5月
从Jetty 9.4.0及更高版本开始,本机Jetty WebSocketClient通过Jetty HttpClient支持Proxies。
这可以通过声明HttpClient及其代理配置,然后将其交给the WebSocketClient constructor来使用。
这仅适用于以下内容:
这不可以使用以下内容:
原始答案
使用Jetty 9,Jetty Native WebSocket客户端或JSR-356(javax.websocket)客户端实现都没有代理支持。
此支持计划用于Jetty 10(跟踪Servlet 4),并将导致Jetty中整个客户端库套件的完全重写,以获得同等的支持:
由于JSR-356支持要求,Jetty上现有的WebSocket客户端实现是独立的。
现有的WebSocket客户端不利用Jetty 9.x中现有的Jetty HttpClient。如果确实如此,那么代理支持可能会在一组非常有限的场景下工作。
这是一个低优先级的功能请求,因为到目前为止支持WebSocket的现有代理很少(实际上,它们通常不支持HTTP / 1.1升级)。甚至Jetty自己的服务器端代理当前也不支持HTTP / 1.1升级连接。
答案 1 :(得分:2)
根据How HTML5 Web Sockets Interact With Proxy Servers中的图2,如果您尝试使用 透明 代理,则不必要求代理支持在客户端。另一方面, 显式 代理需要客户端库支持代理。
如果您的代理是透明的,Jetty WebSocket客户端不会有任何问题。