如果我在Netty 101期间睡着了,请原谅我,但我想知道是否有一种“正确”的方式等待多步连接过程完成Netty。假设我有一个应用程序,其过程如下:
当我致电Bootstrap#connect()
时,我会获得ChannelFuture
。我的理解是ChannelFuture
只要第1步 - 刚刚打开连接就会成功 - 但我们仍然需要通过某种方式等待第2步和第3步。
我过去所做的是创建一个辅助“一切都已完成”Promise
,并在步骤3完成后立即通知该承诺(或者如果在此期间有任何失败)。这种方法运作得很好,但是当Netty可能已经有一个处理这种情况的机制时,他有一种艰难的做事感觉。
所以,我想,这是我的问题: 有更好的方法等待多步连接过程完成吗?
谢谢!
答案 0 :(得分:0)
应用程序级别握手属于应用程序级别处理程序,在您的netty处理程序中,很容易通过处理程序中的channelActive(ChannelHandlerContext)方法捕获“connect”事件。
一个例子:
public class ApplicationLogicHandler extends ChannelInboundHandler {
@Override
public void channelActive(ChannelHandlerContext ctx) throws Exception {
super.channelActive(ctx);
ctx.writeAndFlush(new MyApplicationLogicPacket());
}
}