Netty ch.write()贯穿整个管道
我的应用程序中有两个Netty ch.write()贯穿整个管道,netty,Netty,我的应用程序中有两个SimpleChannelHandler: pipeline.addLast("handler1", new FirstHandler()); pipeline.addLast("handler1", new SecondHandler()); 两者都实现了消息接收和写入请求。FirstHandler正在执行一些握手操作,完成后将被删除,这样只有SecondHandler留在管道中 如果我在handshainking步骤中使用ch.write(…)在通道上写入一些内容,那么
SimpleChannelHandler
:
pipeline.addLast("handler1", new FirstHandler());
pipeline.addLast("handler1", new SecondHandler());
两者都实现了消息接收
和写入请求
。FirstHandler
正在执行一些握手操作,完成后将被删除,这样只有SecondHandler
留在管道中
如果我在handshainking步骤中使用ch.write(…)
在通道上写入一些内容,那么它将通过整个管道(从最后一个处理程序到第一个处理程序)。为什么从SecondHandler
调用writeRequested
?我以为它只是从我们做ch.write(…)的层返回:
为什么
ch.write(…)
贯穿所有层?这是因为,从handler到channel.write()到直接使用org.jboss.netty.channel.Channels
类,有很多方法可以进行写入。您已经使用了channel.write(),它实际委托给第一个。在您的情况下,您必须直接使用通道中的第二种方法
公共静态通道未来写入(通道、对象消息)
公共静态无效写入(ChannelHandlerContext ctx、ChannelFuture、对象消息)
这是因为,有很多方法可以从处理程序进行写入,从channel.write()到直接使用
org.jboss.netty.channel.Channels
类。您已经使用了channel.write(),它实际委托给第一个。在您的情况下,您必须直接使用通道中的第二种方法
公共静态通道未来写入(通道、对象消息)
公共静态无效写入(ChannelHandlerContext ctx、ChannelFuture、对象消息)
看起来不错。除了我不知道如何处理
频道未来
。我正在使用一个Channels.future(ctx.getChannel())
就像在一些示例中一样。如果您选择,请不要对频道future执行任何操作。它看起来不错。除了我不知道如何处理频道未来
。我使用的是一个Channels.future(ctx.getChannel())
,就像在一些示例中一样。如果您选择,请不要对频道future执行任何操作。
| ^
v |
FirstHandler ----> FirstHandler
// Not used in the handshaking step
SecondHandler ----> SecondHandler