Netty ChannelActive从其他添加处理程序时不起作用

时间:2019-02-17 21:24:02

标签: java netty

我有一个AuthenticationHandler extends ChannelHandlerAdapter,并在channelRead中检查用户是否有效。如果是这样,我添加一个新的处理程序(ServerHandler)来接收所有其他消息。

ctx.pipeline().addLast(new ServerHandler());
ctx.pipeline().remove(this);

问题是channelActive方法没有执行。但是我需要这样做,以将客户端添加到所有客户端的列表中。还有其他方法吗?也许有人可以帮忙!我正在使用Netty 5.0.0 Alpha 2的问题吗?但这应该可行,对吗?

1 个答案:

答案 0 :(得分:0)

channelActive仅在Channel处于活动状态时才执行,从TCP的角度来说,这意味着建立连接。如果在连接频道后添加ChannelHandler,它将再也看不到活动事件。

更好的覆盖handlerAdded(...),可以保证在所有情况下都被调用。