Netty 4处理通道事件

3
在Netty 3中,我可以使用ChannelUpstreamHandler来处理打开/关闭事件,例如:
pipeline.addLast("channelGroupHandler", new SimpleChannelUpstreamHandler() {
  public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) {
    ...
  }

  public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) {
    ...
  }
});

但在Netty 4中,它无法正常工作。那么现在我该如何处理这些事件?

2个回答

6
如果您查看4.0中的新特性,您会发现:
  • 在3.x中,当创建一个新的连接的Channel时,至少会触发三个ChannelStateEventschannelOpenchannelBoundchannelConnected。当一个Channel被关闭时,至少还会有3个事件:channelDisconnectedchannelUnboundchannelClosed

  • 在4.x中,channelOpenchannelBoundchannelConnected已经合并为channelActive。否则,channelDisconnectedchannelUnboundchannelClosed已经合并为channelInactive

您应该使用新的API,就是这样。


2

看起来在Netty 4中要使用的新类是ChannelInboundHandlerAdapter

pipeline.addLast("channelGroupHandler", new ChannelInboundHandlerAdapter() {
  public void channelActive(ChannelHandlerContext ctx) {
    ...
  }

  public void channelInactive(ChannelHandlerContext ctx) {
    ...
  }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接