Netty:http服务器将http请求发送到另一台服务器

时间:2019-02-14 06:46:52

标签: http netty

我正在构建一个Iot平台,并正在使用Netty为该平台构建一个http服务器。这就是我需要的:

(1)某些应用程序将请求发送到我的http服务器。
(2)我的http服务器从http请求中获取一个参数,并基于该参数将另一个http请求发送到另一台服务器。
(3)在其他服务器响应之后,为原始应用程序准备一个新的http响应。

我认为在此过程中,服务器既是http服务器又是客户端。因此,我有两组类,httpServerhttpClient。我的问题是,服务器从另一台服务器获得响应后,我不知道如何将httpClientHandler类的响应共享给httpServerHandler类。我发现了一些类似的帖子,但没有得到非常明确的说明。

以下是我找到的链接: (1)fire events in httpClientHandler(2)return a future(3)seems to be using other threads( I don't really understand this one )(4)this one seems to have no clear answer.

下面是我尝试过(但失败)的解决方案

(1)我试图将channelHandlerContext的{​​{1}}传递给httpServerHandler。然后像这样在httpClientHandler中调用ctx.writeAndFlush("something")

httpClientHandler

但这没用。更具体地说,我没有在回复中看到“内容”。

(2)我也尝试使用Future,但是不知道该放在哪里。具体来说,我只能在public class HttpClientHandler { private ChannelHandlerContext serverCtx; public HttpSnoopClientHandler(ChannelHandlerContext serverCtx) { this.serverCtx = serverCtx; } @Override public void channelRead0(ChannelHandlerContext ctx, HttpObject msg){ this.serverCtx.writeAndFlush("something"); } } 的{​​{1}}方法中“获取”响应。如何发出channelRead0听的未来对象?

(3)我也考虑过使用自定义事件,但是还不清楚如何实现它。

任何建议将不胜感激!

0 个答案:

没有答案