в чем разница между channelInactive и channe.closeFuture (). addListener () в Netty - PullRequest
0 голосов
/ 07 мая 2020
 public class ChannelActiveHandler extends SimpleChannelInboundHandler {


    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        System.out.println("channel open");

        // add closeListener
        ctx.channel().closeFuture().addListener(future->{

            // do somthing when channel is close!
            System.out.println("channel close! state:"+ctx.channel().isActive());
        });

        super.channelActive(ctx);
    }


    @Override
    public void channelInactive(ChannelHandlerContext ctx) throws Exception {

        // do somthing when channel is close!
        System.out.println("channel inactive!");
        super.channelInactive(ctx);
    }

}

Как указано выше, в чем разница между channelInactive() и channel.closeFuture().addListener() в Netty. Когда канал будет закрыт, будут вызваны два метода.

Могут ли оба метода достичь одинакового эффекта?

1 Ответ

0 голосов
/ 07 мая 2020

В вашем варианте использования они ничем не отличаются. Тем не менее, в channelInactive(...) вы также можете отложить запуск события до следующего обработчика в конвейере. Обычно, если вы используете channelActive в обработчике, вам также следует использовать другие методы, если это необходимо.

...