Netty之添加Handler

本文详细介绍了在Netty中如何正确地为服务端Channel配置多个Handler,避免了使用handler()方法导致的覆盖问题,并解释了如何利用ChannelInitializer实现多Handler的添加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Netty开发服务端的时候,需要向服务端Channel(NioServerSocketChannel)和客户端Channel(NioSocketChannel)添加Handler,大致如下

		NioEventLoopGroup boss = new NioEventLoopGroup(1);
        NioEventLoopGroup worker = new NioEventLoopGroup();
        ServerBootstrap serverBootstrap = new ServerBootstrap();

        serverBootstrap.group(boss, worker).channel(NioServerSocketChannel.class)
                .handler(new BusinessInHandler1())
                .handler(new BusinessInHandler2())
                .childHandler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    protected void initChannel(SocketChannel ch) throws Exception {

                        ChannelPipeline pipeline = ch.pipeline();
                        pipeline.addLast(new StringDecoder());
                        pipeline.addLast(new StringEncoder());

                    }
                });

        serverBootstrap.bind("127.0.0.1", 8086).sync();

通过调用handler()可以给服务端Channel添加Handler。但是这样的话,
后者会覆盖前者,BusinessInHandler2会覆盖BusinessInHandler1,因此也达不到
向服务端Channel添加多个Handler的目的,有且只能使用ChannelInitializer才能做到。

.handler(new ChannelInitializer<ServerSocketChannel>() {
     @Override
     protected void initChannel(ServerSocketChannel ch) throws Exception {
         ch.pipeline().addLast(new BusinessInHandler1());
         ch.pipeline().addLast(new BusinessInHandler2());
     }
 })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值