Netty 4和服务器分块响应
我正在尝试迁移我的服务器代码,该代码用于使用分块类来响应某些请求。根据我收到的关于我之前提出的一个问题的反馈,我写信给a频道Netty 4和服务器分块响应,netty,Netty,我正在尝试迁移我的服务器代码,该代码用于使用分块类来响应某些请求。根据我收到的关于我之前提出的一个问题的反馈,我写信给a频道DefaultHttpResponse(使用Transfer Encoding:chunked),一些内容使用DefaultHttpContent,最后是DefaultLastHttpContent。如果这很重要的话,这都是通过SSL实现的。我的管道相当基本,包括: if (sslFactory != null) { SSLEngine engine = s
DefaultHttpResponse
(使用Transfer Encoding:chunked
),一些内容使用DefaultHttpContent
,最后是DefaultLastHttpContent
。如果这很重要的话,这都是通过SSL实现的。我的管道相当基本,包括:
if (sslFactory != null) {
SSLEngine engine = sslFactory.createSSLEngine(false);
engine.setUseClientMode(false);
p.addLast("ssl", new SslHandler(engine));
}
p.addLast("decoder", new HttpRequestDecoder(connectConfig.maxInitialLineLength(),
connectConfig.maxHeaderSize(), connectConfig.maxChunkSize()));
// Uncomment the following line if you don't want to handle HttpChunks.
p.addLast("aggregator", new HttpObjectAggregator(1048576));
p.addLast("encoder", new HttpResponseEncoder());
p.addLast("deflater", new HttpContentCompressor());
ChannelHandler handler = new BusinessRequestHandler(...);
// if enabled, use the execution handler
if (eventExecutor.isDefined()) {
p.addLast(eventExecutor.get(), "handler", handler);
} else {
p.addLast("handler", handler);
}
在任何情况下,都不会像我与tcpdump/Wireshark确认的那样通过电线发送这些信息。我还向写操作添加了一个完成处理程序,它们都表示写操作已经完成。如果我切换到使用FullHttpResponse
并跳过对其进行分块,那么一切都会正常工作,内容也会被写出来
然后我查看了HttpContentEncoder::encode
,我看不到HttpResponse本身是如何传递的。如果将其设置为状态代码100,则会出现错误,但这显然不适用于此用例。据我所知,对于我的用例,该函数将返回null
我错过了什么
谢谢,
Senthil.这是Netty 4.0.0.CR1中的一个bug。修复已于今天推出:Tustin在下面提供的链接修复了一些问题,但其他问题仍未解决,我对此进行了记录。