添加和删​​除写入Idlestatehandler

时间:2016-03-15 13:36:11

标签: netty

在我的基于Netty的Http Server中,我添加了

@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请求之后,即将响应发送回客户端i,删除" Timeout_Handler"来自管道和通道连接保持打开状态,除非发生KeepAlive_Handler事件或抛出一些致命异常。

我不确定是否始终为每个Http请求调用ChannelInitializer的initChannel(),或者在某些情况下不调用它?这很重要,因为我正在删除" Timeout_Handler"在每个Http请求之后,如果没有为某些Http请求调用initChannel(),那么这些请求肯定会在没有" Timeout_Handler"的情况下处理。

1 个答案:

答案 0 :(得分:0)

为表示连接的每个新Channel调用initChannel(...)。所以不是没有按要求调用它。