我有一个AuthenticationHandler extends ChannelHandlerAdapter
,并在channelRead
中检查用户是否有效。如果是这样,我添加一个新的处理程序(ServerHandler
)来接收所有其他消息。
ctx.pipeline().addLast(new ServerHandler());
ctx.pipeline().remove(this);
问题是channelActive
方法没有执行。但是我需要这样做,以将客户端添加到所有客户端的列表中。还有其他方法吗?也许有人可以帮忙!我正在使用Netty 5.0.0 Alpha 2的问题吗?但这应该可行,对吗?
答案 0 :(得分:0)
channelActive
仅在Channel
处于活动状态时才执行,从TCP的角度来说,这意味着建立连接。如果在连接频道后添加ChannelHandler
,它将再也看不到活动事件。
更好的覆盖handlerAdded(...)
,可以保证在所有情况下都被调用。