yanghb
2023-04-04 3ce8e9212f465af655a92a9a7d5302f92acb5e40
名称调整
3个文件已修改
53 ■■■■ 已修改文件
ZuulTravel/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZuulTravel/src/main/java/com/sinata/zuul/util/applets/NettyServer0.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZuulTravel/src/main/java/com/sinata/zuul/util/echo/NettyServer.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ZuulTravel/src/main/java/com/sinata/zuul/util/applets/ChildChannelHandler.java
@@ -13,14 +13,14 @@
public class ChildChannelHandler extends ChannelInitializer<SocketChannel> {
    @Override
    protected void initChannel(SocketChannel socketChannel) throws Exception {
        String path = "D:\\Program Files\\Apache Software Foundation\\Tomcat 8.5-80\\cert\\6855055_zhentonggongsi.com.pfx";
//        String path = "/usr/local/server/apache-tomcat-80/conf/cert/6064978_okyueche.com.pfx";
        SSLContext sslContext = createSSLContext.createSSLContext("PKCS12"
                , path, "jBOjj2fR");
        //SSLEngine 此类允许使用ssl安全套接层协议进行安全通信
        SSLEngine engine = sslContext.createSSLEngine();
        engine.setUseClientMode(false);
        socketChannel.pipeline().addLast("ssl", new SslHandler(engine));
//        String path = "D:\\Program Files\\Apache Software Foundation\\Tomcat 8.5-80\\cert\\6855055_zhentonggongsi.com.pfx";
////        String path = "/usr/local/server/apache-tomcat-80/conf/cert/6064978_okyueche.com.pfx";
//        SSLContext sslContext = createSSLContext.createSSLContext("PKCS12"
//                , path, "jBOjj2fR");
//        //SSLEngine 此类允许使用ssl安全套接层协议进行安全通信
//        SSLEngine engine = sslContext.createSSLEngine();
//        engine.setUseClientMode(false);
//        socketChannel.pipeline().addLast("ssl", new SslHandler(engine));
        // 设置30秒没有读到数据,则触发一个READER_IDLE事件。
        // pipeline.addLast(new IdleStateHandler(30, 0, 0));
ZuulTravel/src/main/java/com/sinata/zuul/util/applets/NettyServer0.java
@@ -2,9 +2,12 @@
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import java.util.Timer;
import java.util.TimerTask;
@@ -48,29 +51,27 @@
        @Override
        public void run() {
            System.out.println("===========================Netty端口启动========");
            // Boss线程:由这个线程池提供的线程是boss种类的,用于创建、连接、绑定socket,
            // (有点像门卫)然后把这些socket传给worker线程池。
            // 在服务器端每个监听的socket都有一个boss线程来处理。在客户端,只有一个boss线程来处理所有的socket。
            EventLoopGroup bossGroup = new NioEventLoopGroup();
            // Worker线程:Worker线程执行所有的异步I/O,即处理操作
            EventLoopGroup workrGroup = new NioEventLoopGroup();
            EventLoopGroup workerGroup = new NioEventLoopGroup();
            try {
                // ServerBootstrap 启动NIO服务的辅助启动类,负责初始话netty服务器,并且开始监听端口的socket请求
                ServerBootstrap b = new ServerBootstrap();
                b.group(bossGroup, workrGroup);
                // 设置非阻塞,用它来建立新accept的连接,用于构造serversocketchannel的工厂类
                b.channel(NioServerSocketChannel.class);
                // ChildChannelHandler 对出入的数据进行的业务操作,其继承ChannelInitializer
                b.childHandler(new ChildChannelHandler());
                //1.创建服务端启动助手
                ServerBootstrap serverBootstrap = new ServerBootstrap();
                //2.设置线程组
                serverBootstrap.group(bossGroup, workerGroup);
                //3.设置参数
                serverBootstrap.channel(NioServerSocketChannel.class)
                        .handler(new LoggingHandler(LogLevel.DEBUG))
                        .childHandler(new ChildChannelHandler());
                System.out.println("服务端开启等待客户端连接 ... ...");
                Channel ch = b.bind(9090).sync().channel();
                ch.closeFuture().sync();
                //4.启动
                ChannelFuture channelFuture = serverBootstrap.bind(80).sync();
                System.out.println("--Netty服务端启动成功---");
                channelFuture.channel().closeFuture().sync();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                bossGroup.shutdownGracefully();
                workrGroup.shutdownGracefully();
                workerGroup.shutdownGracefully();
            }
        }
    }
ZuulTravel/src/main/java/com/sinata/zuul/util/echo/NettyServer.java
@@ -50,7 +50,7 @@
        /**
         * 获取即时通讯启动端口 
         */
        private Integer nettyPort = 8888;
        private Integer nettyPort = 9999;
        @Override
        public void run() {
            EventLoopGroup bossGroup = new NioEventLoopGroup();
@@ -61,7 +61,7 @@
                bootstrap.channel(NioServerSocketChannel.class);
                bootstrap.option(ChannelOption.SO_BACKLOG, 1024);
                // 通过TCP_NODELAY禁用NAGLE,使消息立即发出去,不用等待到一定的数据量才发出去
                bootstrap.option(ChannelOption.TCP_NODELAY, true);
                bootstrap.childOption(ChannelOption.TCP_NODELAY, true);
                // 保持长连接状态
                bootstrap.childOption(ChannelOption.SO_KEEPALIVE, true);
                bootstrap.childHandler(new ServerInit() {