首页 > 解决方案 > 何时将 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);
    /* ... */

在这里,我们有一个ChannelInboundAdapter被传递的 a ChannelHandlerContext。美好的。

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

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

标签: netty

解决方案


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

对示例的建议修复:

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


推荐阅读