0

我正在使用 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()

提前感谢所有帮助!

4

2 回答 2

0

如果您也对服务器进行编码,您可以让客户端向 HTTP 标头添加一个唯一的 id,并让服务器在响应中回显它。

于 2013-06-21T13:54:16.333 回答
0

如果您遵循严格的 HTTP 流水线规则,那么在任何给定的通道上,响应将按照发送请求的顺序返回。维护一个请求队列就足够了,为收到的每个响应删除队列的前端。

如果您要为每个请求创建一个新通道和该通道的新管道,那就更容易了。无论哪种方式,您都可以向管道添加一个处理程序,该处理程序记住请求(或请求队列),并在收到响应时将请求和响应返回给您的应用程序。

于 2013-06-22T11:20:47.687 回答