Netty 4和服务器分块响应

Netty 4和服务器分块响应,netty,Netty,我正在尝试迁移我的服务器代码,该代码用于使用分块类来响应某些请求。根据我收到的关于我之前提出的一个问题的反馈,我写信给a频道DefaultHttpResponse(使用Transfer Encoding:chunked),一些内容使用DefaultHttpContent,最后是DefaultLastHttpContent。如果这很重要的话,这都是通过SSL实现的。我的管道相当基本,包括: if (sslFactory != null) { SSLEngine engine = s

我正在尝试迁移我的服务器代码,该代码用于使用分块类来响应某些请求。根据我收到的关于我之前提出的一个问题的反馈,我写信给a频道
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在下面提供的链接修复了一些问题,但其他问题仍未解决,我对此进行了记录。