Netty

netty服务端的初始化

//类加载初始化方法
@PostConstruct
public void start() {
    try {
        //创建netty服务器对象
 ServerBootstrap bootstrap = new ServerBootstrap();
 bootstrap.option(ChannelOption.SO_BACKLOG, 1024);
 bootstrap.option(ChannelOption.TCP_NODELAY, true);
 bootstrap.group(boss, work);
 bootstrap.channel(NioServerSocketChannel.class);
 bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true);
 bootstrap.childHandler(myChannelInitializer);
 logger.info("netty服务器启动");
 ChannelFuture future = bootstrap.bind(port).sync();
 //ChannelFuture future2 = bootstrap.bind(port2).sync();
 } catch (InterruptedException e) {
        logger.error("服务器启动失败");
 //当服务器启动失败得时候由netty的调度功能来关闭netty的服务器
 work.shutdownGracefully();
 boss.shutdownGracefully();
 }
}

1.(ChannelOption.SO_BACKLOG, 1024 )
表示标识当服务器请求处理线程全满时,用于临时存放已完成[三次握手]的请求的队列的最大长度。如果未设置或所设置的值小于1,Java将使用默认值为50
2.(ChannelOption.TCP_NODELAY, true)
TCP_NODELAY就是用于启用或关于[Nagle算法],如果要求高实时性,有数据发送时就马上发送,就将该选项设置为true关闭[Nagle算法],如果要减少发送次数减少网络交互,就设置为false等累积一定大小后再发送。默认为false。
3.bootstrap.group(boss, work);
是初始化两个线程,一个线程负责接受新的连接,一个负责处理读写;是开启了;
核心思想:轮询,没有连接立刻返回不要耽误其他的客户端连接,不会阻塞;一个线程不会浪费资源;
4.bootstrap.channel(NioServerSocketChannel.class);
声明利用反射机制来获取NioServerSocketChannel得到实例
5.bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true);
当设置为true的时候,TCP会实现监控连接是否有效,当连接处于空闲状态的时候,超过了2个小时,本地的TCP实现会发送一个数据包给远程的 socket,如果远程没有发回响应,TCP会持续尝试11分钟,知道响应为止,如果在12分钟的时候还没响应,TCP尝试关闭socket连接
6.bootstrap.childHandler(myChannelInitializer);
初始化客户端Handler~~~~
7.ChannelFuture future = bootstrap.bind(port).sync()
为服务端netty绑定端口

你可能感兴趣的:(netty,后端)