일부 요청에 응답하기 위해 청크 클래스를 사용하는 서버 코드를 마이그레이션하려고합니다. 이전에 질문 한 질문에 대한 피드백을 바탕으로 DefaultHttpResponse
(Transfer-Encoding: chunked
) 채널에 씁니다. 일부 콘텐츠는 DefaultHttpContent
이고 마지막으로는 DefaultLastHttpContent
입니다. 그게 중요하다면 이것은 SSL을 통한 것이다. 내가 tcpdump와/Wireshark와 함께 확인,이 중 누구도 와이어를 발송하지 않습니다 어떤 경우Netty 4 및 서버 청크 응답
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);
}
: 내 파이프 라인에 매우 기본이다. 필자는 완성 처리기를 쓰기에 추가했으며 모두 쓰기가 완료되었음을 나타 냈습니다. FullHttpResponse
으로 전환하고 청크를 건너 뛰면 모든 것이 올바르게 작동하고 내용이 기록됩니다.
그런 다음 HttpContentEncoder::encode
에서 보았고 HttpResponse가 어떻게 전달되는지는 알 수 없습니다. 상태 코드가 100으로 설정되어 있지만이 사용 사례에 대해 명확하지는 않습니다. 내가 알 수있는 한,이 함수는 사용 사례에 대해 null을 반환합니다.
무엇이 누락 되었습니까?
감사합니다. Senthil.
Tustin이 제공 한 링크는 일부 문제를 해결했지만 다른 문제는 해결되지 않았으며 [여기] (https://github.com/netty/netty/issues/1280)에 설명되어 있습니다. . – user2230128
이제 모든 문제가 해결되었습니다. – trustin