首页 文章

Jetty - 具有动态注册的代理服务器

提问于
浏览
0

我们有许多Jetty http(s)服务器,都在不同的防火墙后面 . http服务器位于客户站点(不受我们控制) . 在这些站点的防火墙中打开端口不是一种选择 . 目前,这些服务器仅提供JSON文档以响应REST请求 .

我们的Web客户端需要根据URL参数或标头值与给定的http服务器进行交互 .

这似乎是一个简单的代理服务器情况 - 除了防火墙 .

我目前正在尝试的方法是:

拥有一个集中式代理服务器(也基于Jetty),用于侦听来自远程http服务器的入站注册请求 . 注册请求将采用Websocket连接的形式,只要远程HTTP服务器可用,它就会保持活动状态 . 注册时,Proxy Server将捕获websocket连接并将其映射到资源标识符 .

Web客户端将连接代理服务器,并在URL或标头中包含资源标识符 .

代理服务器将确定要使用的相应Websocket,然后将请求传递给HTTP服务器 . 因此请求和响应将通过Websocket传播 . 收到响应后,它将返回给Web客户端 .

所以这在理论上一切都很好 - 我想弄清楚的是:

a)有更好的方法来实现这一目标吗?

b)设置Jetty在管道的HTTP Server端进行代理的最佳方法是什么?

我想我可以使用Jetty 's HttpClient, but what I really want to do is just pull the HTTP bytes from the websocket and pipe them directly into the Jetty connector. It doesn'似乎有意义解析一切 . 我想我可以在localhost上打开一个常规套接字连接,从websocket中获取字节,并按照这种方式执行 - 但是通过操作系统这样的路径似乎很愚蠢(我已经在HTTP Server的Jetty环境中运行了) .

看起来这似乎是可能已经解决的那种问题......也许通过使用可在WebSockets而不是TCP / IP套接字上工作的自定义jetty连接?


更新:我发现've been playing with this, it seems like another tricky problem is how to handle request/response behavior (and ideally support muxing over the websocket channel). One potential resource that I'是websockets的WAMP子协议:http://wamp.ws/

1 回答

相关问题