NettyServerChannelInitializer.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. package com.jpsoft.education.netty.hander;
  2. import com.jpsoft.education.netty.util.MyDecoder;
  3. import com.jpsoft.education.netty.util.MyEncoder;
  4. import io.netty.channel.ChannelInitializer;
  5. import io.netty.channel.ChannelPipeline;
  6. import io.netty.channel.socket.SocketChannel;
  7. import io.netty.handler.timeout.IdleStateHandler;
  8. import java.util.concurrent.TimeUnit;
  9. /**
  10. * 功能描述: 服务端初始化,客户端与服务器端连接一旦创建,这个类中方法就会被回调,设置出站编码器和入站解码器
  11. *
  12. * @Author keLe
  13. * @Date 2022/8/26
  14. */
  15. public class NettyServerChannelInitializer extends ChannelInitializer<SocketChannel> {
  16. @Override
  17. protected void initChannel(SocketChannel socketChannel) throws Exception {
  18. ChannelPipeline pipeline = socketChannel.pipeline();
  19. //接收消息格式,使用自定义解析数据格式
  20. pipeline.addLast("decoder",new MyDecoder());
  21. //发送消息格式,使用自定义解析数据格式
  22. pipeline.addLast("encoder",new MyEncoder());
  23. //针对客户端,如果在1分钟时没有想服务端发送写心跳(ALL),则主动断开
  24. //如果是读空闲或者写空闲,不处理,这里根据自己业务考虑使用
  25. //pipeline.addLast(new IdleStateHandler(600,0,0, TimeUnit.SECONDS));
  26. //自定义的空闲检测
  27. pipeline.addLast(new NettyServerHandler());
  28. }
  29. }