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 中它不起作用。那么,我现在该如何处理这些事件呢?

4

2 回答 2

6

如果您在 4.0 中检查 New and noteworthy,您可以看到:

  • 在 3.x 中,当Channel创建新连接时,至少ChannelStateEvents会触发三个:channelOpenchannelBoundchannelConnected。当 aChannel闭合时,至少还有 3 个:channelDisconnectedchannelUnboundchannelClosed

  • 在 4.x 中channelOpenchannelBound、 和channelConnected已合并到channelActive. 否则,channelDisconnectedchannelUnboundchannelClosed已合并到channelInactive

您应该使用新的 API,仅此而已。

于 2014-07-29T16:18:29.977 回答
2

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

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

  public void channelInactive(ChannelHandlerContext ctx) {
    ...
  }
});
于 2016-08-04T19:19:48.557 回答