【发布时间】:2015-04-01 03:17:43
【问题描述】:
在 Netty 4 "proxy" example 中,通道自动读取选项已被禁用:
serverBootStrap.group(bossGroup, workerGroup)
...
.childOption(ChannelOption.AUTO_READ, false)
如果评论childOption(ChannelOption.AUTO_READ, false),代理示例将无法工作。更详细一点,在HexDumpProxyFrontendHandler 类的方法channelRead 中,outboundChannel 将始终处于非活动状态。
并且我研究了Netty源代码,发现“自动读取”会在DefaultChannelPipeline类的方法fireChannelActive和fireChannelReadComplete中产生类似的影响
if (channel.config().isAutoRead()) {
read();
}
但我仍然无法弄清楚自动读取和代理示例之间的关系。在我看来,当数据发送到入站缓冲区时,Netty 应该触发通道读取事件。
所以有两个问题:
- 为什么“代理”示例需要禁用自动读取?
- 为什么启用自动读取会使
outboundChannel始终处于非活动状态?
【问题讨论】: