Netty 添加和删除写入Idlestatehandler

Netty 添加和删除写入Idlestatehandler,netty,Netty,在我基于Netty的Http服务器中,我添加了 @Override protected void initChannel(Channel channel) throws Exception { ChannelPipeline pipeline = channel.pipeline(); pipeline.addLast("KeepAlive_Handler", new IdleStateHandler(readTimeout, 0, 0)); pipeline.addLa

在我基于Netty的Http服务器中,我添加了

@Override
protected void initChannel(Channel channel) throws Exception {
    ChannelPipeline pipeline = channel.pipeline();
    pipeline.addLast("KeepAlive_Handler", new IdleStateHandler(readTimeout, 0, 0));
    pipeline.addLast("Timeout_Handler", new IdleStateHandler(0, writeTimeOut, 0));

    addSSLServerHandler(pipeline);
    pipeline.addLast("http-decoder", new HttpRequestDecoder(4096, 16384, 16384));
    pipeline.addLast("http-encoder", new HttpResponseEncoder());

    pipeline.addLast("Reuqest_Handler", new RequestHandler());
}
在RequestHandler中,在处理Http请求(即将响应发送回客户端)后,我从管道中删除“超时处理程序”,通道连接保持打开状态,除非发生KeepAlive_处理程序事件或引发某些致命异常


我不确定的是,每次Http请求都会调用ChannelInitializer的initChannel(),或者在某些情况下不会调用它??这很重要,因为我将在每个Http请求之后删除“Timeout\u Handler”,如果没有为某些Http请求调用initChannel(),那么肯定会在没有“Timeout\u Handler”的情况下处理这些请求。

initChannel(…)将为表示连接的每个新通道调用。因此,不是每个请求都调用它。

initChannel
在创建新通道(连接)时调用,而不是在请求之间调用。我如何确保在我的服务器读取第一个字节时,为每个请求(包括ssl握手)将“写入超时处理程序”添加到管道中,并且在请求完成时(无论响应是什么),这“写入超时处理程序”已删除???换句话说,每个请求都必须有一个新的“写入超时处理程序”实例