1. //初始化配置对象
    2. AioServerConfig aioServerConfig = new AioServerConfig();
    3. //设置host,不设置默认localhost
    4. //aioServerConfig.setHost("127.0.0.1");
    5. //设置端口号
    6. aioServerConfig.setPort(8888);
    7. //设置服务器端内存池最大可分配空间大小,默认256mb,内存池空间可以根据吞吐量设置。
    8. // 尽量可以设置大一点,因为这不会真正的占用系统内存,只有真正使用时才会分配
    9. aioServerConfig.setServerChunkSize(512 * 1024 * 1024);
    10. //设置数据输出器队列大小,一般不用设置这个参数,默认是10*1024*1024
    11. aioServerConfig.setBufferWriterQueueSize(10 * 1024 * 1024);
    12. //设置读取缓存块大小,一般不用设置这个参数,默认128字节
    13. aioServerConfig.setReadBufferSize(2048);
    14. //设置内存池等待分配内存的最大阻塞时间,默认是1秒
    15. aioServerConfig.setChunkPoolBlockTime(1000);
    16. //设置SocketOptions
    17. aioServerConfig.setOption(StandardSocketOptions.SO_RCVBUF, 8192);
    18. server.socketChannel(SocketChannel.TCP).channelInitializer(new ChannelInitializer() {
    19. @Override
    20. public void initChannel(AioChannel channel) throws Exception {
    21. //获取责任链对象
    22. DefaultChannelPipeline defaultChannelPipeline = channel.getDefaultChannelPipeline();
    23. //获取证书
    24. String pkPath = ResourceUtils.getURL("classpath:serverStore.jks")
    25. .getPath();
    26. //ssl配置
    27. SslConfig sSLConfig = new SslConfig();
    28. sSLConfig.setKeyFile(pkPath);
    29. sSLConfig.setKeyPassword("123456");
    30. sSLConfig.setKeystorePassword("123456");
    31. sSLConfig.setTrustFile(pkPath);
    32. sSLConfig.setTrustPassword("123456");
    33. //设置服务器模式
    34. sSLConfig.setClientMode(false);
    35. sSLConfig.setClientAuth(ClientAuth.NONE);
    36. //初始化ssl服务
    37. SslService sslService = new SslService(sSLConfig, "TLSv1.2");
    38. //注意,只要使用ssl。都需要把ssl编解码器放到责任链最前面
    39. defaultChannelPipeline.addFirst(new SslHandler(channel, sslService));
    40. //紧跟着把ws的编解码器添加到责任链前面。注意,只有先通过ws的编解码器,才能解析ws的消息帧,
    41. //后续的解码器才能继续解析期望得到的结果
    42. defaultChannelPipeline.addLast(new WebSocketEncoder());
    43. defaultChannelPipeline.addLast(new WebSocketDecoder());
    44. defaultChannelPipeline.addLast(new StringDecoder());
    45. //添加自定义的简单消息处理器
    46. defaultChannelPipeline.addLast(new SimpleHandler());
    47. }
    48. }).start();
    49. System.out.println("启动ws服务");
    50. } catch (Exception e) {