【问题标题】:Netty channelActive vs channelRead0Netty channelActive vs channelRead0
【发布时间】:2017-04-03 20:55:17
【问题描述】:

我正在使用 netty 4.0.33 来构建 SSL/TLS 客户端/服务器。对于每个连接,我想记录一条消息,表明 2 个对等方之间的 TLS 连接成功。 我应该把这个代码sn-p放在哪里? channelActive 还是 channelRead0?我对 channelActive 和 channelRead0 的用途有点困惑。看起来在服务器端,我们根本不需要 channelActive。这是真的吗?

【问题讨论】:

    标签: netty


    【解决方案1】:

    如果你想在握手成功时做某事你可以使用:

    class MyHandler extends ChannelInboundHandler { @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { if (evt == SslHandshakeCompletionEvent.SUCCESS) { // Your handling logging } else { super.userEventTriggered(ctx, evt); } } }

    【讨论】:

    • 感谢您的回答。我试图实现的目标是,如果 SSL 连接成功,则记录它。如果客户端刚刚完成 TCP 握手,并没有启动 SSL,那么也记录一下。
    【解决方案2】:

    您可以将 LoggingHandler 添加到您的管道中,如果客户端处于活动状态,它将记录。主动意味着连接。 ChannelRead 在 channelActive 之后调用,在这里您可以阅读消息。在 channelActive 中,您可以根据需要初始化一些有用的东西(例如,将连接的通道添加到队列中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 2019-03-18
      • 2023-03-13
      • 2019-11-11
      • 1970-01-01
      • 2017-12-18
      相关资源
      最近更新 更多