gpt4 book ai didi

netty - 使用 Netty 等待多步连接过程完成

转载 作者:行者123 更新时间:2023-12-01 09:07:30 29 4
gpt4 key购买 nike

如果我在 Netty 101 期间睡着了,请原谅我,但我想知道是否有一种“正确”的方式来等待 Netty 完成多步骤连接过程。假设我有一个应用程序,其过程如下所示:

  • 打开实际连接。
  • 执行 TLS 握手。
  • 做一些应用程序级的握手以确认客户端和服务器都在使用 FancyProtocol 2.8(或其他)。

  • 当我调用 Bootstrap#connect() , 我得到了一个 ChannelFuture .我的理解是 ChannelFuture只要第 1 步(只是打开连接)完成,就会成功,但我们仍然需要通过某种方式等待第 2 步和第 3 步。

    我过去所做的是创建辅助“一切都完成” Promise ,并在第 3 步完成后立即通知该 promise (或者如果在此期间发生任何故障)。这工作得很好,但是当 Netty 可能已经有一个机制来处理这种情况时,感觉做事很艰难。

    所以,我想,这是我的问题:有没有更好的方法来等待多步连接过程完成?

    谢谢!

    最佳答案

    应用程序级握手属于应用程序级处理程序,在您的 netty 处理程序中,使用处理程序中的 channelActive(ChannelHandlerContext) 方法很容易捕获“连接”事件。

    一个例子:

    public class ApplicationLogicHandler extends ChannelInboundHandler {
    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
    super.channelActive(ctx);
    ctx.writeAndFlush(new MyApplicationLogicPacket());
    }
    }

    关于netty - 使用 Netty 等待多步连接过程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34637309/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com