什么时候将 ChannelHandlerContext 传递给 ChannelHandler 而不是该 ChannelHandler 自己的上下文?



这是一个(永久(链接,指向我有一个问题的野外示例,该示例来自Netty自己的示例。 有问题的例子本身并不重要,只是它显示了我想知道的模式:

https://github.com/netty/netty/blob/b26a61acd1bde5b6fca21026cd9123a38f277ad6/example/src/main/java/io/netty/example/http2/helloworld/multiplex/server/Http2ServerInitializer.java#L97-L103

我在下面摘录了它:

@Override
protected void channelRead0(ChannelHandlerContext ctx, HttpMessage msg) throws Exception {
    ChannelPipeline pipeline = ctx.pipeline();
    ChannelHandlerContext thisCtx = pipeline.context(this);
    /* ... */

在这里,我们有一个通过ChannelHandlerContextChannelInboundAdapter。 好。

不过,我在这里摘录的方法的前两行跳过了一些箍来获得"正确的"ChannelHandlerContext,这意味着(无论如何,对我来说(提供给此方法的ChannelHandlerContext在某种程度上不是"属于"这个ChannelHandler

在什么情况下需要这种跳箍?

感谢您提出这个问题...这实际上是示例中的"错误",完全没有必要。只需使用 ctx :)

对示例的建议修复:

https://github.com/netty/netty/pull/9276

最新更新