我正在使用netty-4.0x编写一个简单的HTTP客户端。
按如下方式构建管道:
pipeline.addLast("codec", new HttpClientCodec());
pipeline.addLast("inflater", new HttpContentDecompressor());
pipeline.addLast("handler", new HttpResponseHandler());
其中HttpResponseHandler
提供messageReceived()
,
现在有一个线程池调用客户端并继续发送http消息,
我知道ChannelFuture future = channel.write(request);
是异步调用,并且会在没有阻止的情况下出现
我遇到的查询是,有没有办法在不调用的情况下链接请求 - 响应
future.sync()
致电。
提前感谢所有帮助!!!
答案 0 :(得分:0)
如果您对服务器进行编码,则可以让客户端向HTTP标头添加唯一ID,并让服务器在响应中回显它。
答案 1 :(得分:0)
如果您遵循严格的HTTP流水线规则,那么在任何给定的通道上,响应将按请求发送的顺序返回。应该足以维护请求队列,删除每个队列的前端收到回复。
如果要为每个请求创建新频道和该频道的新管道,则更容易。无论哪种方式,您都可以向管道添加处理程序,该处理程序会记住请求(或请求队列),并在收到响应时将请求和响应返回给您的应用程序。