Netty handlerUpstream和sendUpstream之间的净额差异

Netty handlerUpstream和sendUpstream之间的净额差异,netty,nio,Netty,Nio,我不熟悉NIO和Netty框架 我正在使用netty开发示例HTTP服务器,以便能够异步处理数千个客户端连接。我使用了多个处理程序进行编码、解码、聚合和许多操作 当一个处理程序发生MessageReceived事件时,我将其传递给下一个处理程序,以此类推 为了传递偶数,我使用了ctx.sendUpstream(e)//ctx ChannelHandlerContext,e-event 但是在浏览netty的源代码时,我发现了另一种方法handleUpstream(ctx,e) 我已经试过调试ne

我不熟悉NIO和Netty框架

我正在使用netty开发示例HTTP服务器,以便能够异步处理数千个客户端连接。我使用了多个处理程序进行编码、解码、聚合和许多操作

当一个处理程序发生MessageReceived事件时,我将其传递给下一个处理程序,以此类推

为了传递偶数,我使用了
ctx.sendUpstream(e)//ctx ChannelHandlerContext,e-event

但是在浏览netty的源代码时,我发现了另一种方法
handleUpstream(ctx,e)

我已经试过调试netty源代码,但我真的对
sendUpstream()
handleUpstream()的用法感到困惑


它们之间有什么不同?我应该使用哪一个?

对,Netty 3使用
通道上游Handler.handleUpstream()
来处理传入消息,并使用
ctx.sendUpstream()
将消息进一步向上游传递。Netty 4还有其他方法,如
ctx.fireChannelRead()

,谢谢您的回答。假设事件messageReceived进程上的handler1处理该数据,并希望使用sendUpstream()将其传递给handler2。然后handler2也只在messageReceived()事件中处理该数据。那么,我是否需要在handleUpstream()方法中处理数据,而不是在handler2中处理MessageReceived()?这取决于您使用的处理程序和适配器。基本接口ChannelUpstreamHandler具有单个方法handleUpstream()(无MessageRecved())。因此,如果实现此接口,应该使用handleUpstream()。如果您使用的是类似适配器的SingleChannelHandler,您应该在messageReceived()中处理消息,您的意思是,如果我实现ChannelUpstreamHandler(),那么我应该重写handleUpstream()方法,如果我扩展了SimpleChannelUpstreamhandler,那么我应该使用messageReceived()。但我的问题是,如果我实现ChannelUpstreamhandler(),那么我如何处理channelConnected()channelDisconnected()事件,因为接口中只有一个handleUpstream()方法?Netty的接收器发送上游消息来通知通道状态更改-ChannelStateEvent。SimpleChannelUpstreamHandler按如下方式处理这些消息:if(e instanceof ChannelStateEvent){ChannelStateEvent evt=(ChannelStateEvent)e;switch(evt.getState()){case CONNECTED:if(evt.getValue()!=null){channelConnected(ctx,evt);}else{channelDisconnected(ctx,evt);}break;..}