Warum muss das Proxy-Beispiel von Netty 4 den Kanal "AUTO_READ" auf "false" setzen
In Netty 4 "Proxy" Beispiel, die automatische Kanalleseoption wurde deaktiviert:
serverBootStrap.group(bossGroup, workerGroup)
...
.childOption(ChannelOption.AUTO_READ, false)
Wenn kommentiertchildOption(ChannelOption.AUTO_READ, false)
, das Proxy-Beispiel kann nicht funktionieren. Und detaillierter, in der MethodechannelRead
der KlasseHexDumpProxyFrontendHandler
, dasoutboundChannel
wird immer inaktiv sein.
Und ich habe Netty-Quellcode recherchiert und festgestellt, dass sich "Auto Read" in Methoden wie folgt auswirktfireChannelActive
undfireChannelReadComplete
der KlasseDefaultChannelPipeline
if (channel.config().isAutoRead()) {
read();
}
Aber ich kann immer noch nicht herausfinden, was die Beziehung zwischen dem automatischen Lesen und dem Proxy-Beispiel ist. Wenn Daten an den Eingangspuffer gesendet werden, sollte Netty meines Erachtens das Channel-Read-Ereignis auslösen.
So gibt es zwei Fragen:
Warum ist die Deaktivierung des automatischen Lesens für das Beispiel "Proxy" erforderlich?Warum aktiviert Auto Read machtoutboundChannel
immer inaktiv?