我正在构建一个Iot平台,并正在使用Netty为该平台构建一个http服务器。这就是我需要的:
(1)某些应用程序将请求发送到我的http服务器。
(2)我的http服务器从http请求中获取一个参数,并基于该参数将另一个http请求发送到另一台服务器。
(3)在其他服务器响应之后,为原始应用程序准备一个新的http响应。
我认为在此过程中,服务器既是http服务器又是客户端。因此,我有两组类,httpServer
和httpClient
。我的问题是,服务器从另一台服务器获得响应后,我不知道如何将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)我也考虑过使用自定义事件,但是还不清楚如何实现它。
任何建议将不胜感激!