gpt4 book ai didi

java - Netty 4 出站消息处理程序关闭连接

转载 作者:搜寻专家 更新时间:2023-11-01 03:07:49 24 4
gpt4 key购买 nike

我正在 Netty 4 中试验自定义出站消息处理程序,但似乎无法使其正常工作。处理程序仅记录一条语句并添加到 channel 管道的底部。我的理解是,一旦发出写操作,这些处理程序就会按顺序自下而上调用。自定义处理程序的想法是它将在任何其他出站消息处理程序之前执行。

不幸的是,当我将这个日志处理程序添加到管道时,我看到了日志语句,但 Netty 似乎立即关闭了连接。这是我的 channel 初始化程序和出站处理程序代码。

HttpOutboundHandler.java

public class HttpOutboundHandler extends ChannelOutboundMessageHandlerAdapter<DefaultFullHttpResponse> {
private static final Logger logger = LoggerFactory.getLogger(HttpOutboundHandler.class);

@Override
public void flush(ChannelHandlerContext context, DefaultFullHttpResponse response)
throws Exception {
logger.debug("Executing outbound handler.");
}
}

HttpChannelInitializer.java

@Override
protected void initChannel(SocketChannel socketChannel) throws Exception {
pipeline.addLast("encoder", new HttpResponseEncoder());
pipeline.addLast("decoder", new HttpRequestDecoder());
pipeline.addLast("aggregator", new HttpObjectAggregator(1048576);
pipeline.addLast("compressor", new HttpContentCompressor(gzipLevel));
pipeline.addLast("outboundHandler", outboundHandler);
pipeline.addLast(eventExecutorGroup, "inboundHandler", inboundHandler);
}

最后,这是记录器输出。

[DEBUG] (Slf4JLogger:71) - [id: 0xbddf00cf, /0:0:0:0:0:0:0:1:57402 => /0:0:0:0:0:0:0:1:8080] ACTIVE
[DEBUG] (HttpOutboundHandler:19) - Executing outbound handler.
[DEBUG] (Slf4JLogger:71) - [id: 0x942993c1, /0:0:0:0:0:0:0:1:57403 :> /0:0:0:0:0:0:0:1:8080] INACTIVE

最佳答案

回答我自己的问题以防其他人发现这个问题。

事实证明我需要将消息添加到下一个出站消息缓冲区(我相信这具有将其传递到链中的下一个处理程序的效果)。我还需要保留消息。更新后的代码现在看起来像...

public class HttpOutboundHandler extends ChannelOutboundMessageHandlerAdapter<DefaultFullHttpResponse> {
private static final Logger logger = LoggerFactory.getLogger(HttpOutboundHandler.class);

@Override
public void flush(ChannelHandlerContext context, DefaultFullHttpResponse response)
throws Exception {
logger.debug("Executing outbound handler.");
ChannelHandlerUtil.addToNextOutboundBuffer(context, response.retain());
}
}

关于java - Netty 4 出站消息处理程序关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16475885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com