From f75a1fa57b9998106b5af4cb1bae65c6949b309a Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Sun, 30 Oct 2022 00:07:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E9=87=8D=E8=BF=9E?= =?UTF-8?q?=E6=9C=BA=E5=88=B6=E4=BC=98=E5=8C=96&=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=B0=83=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../proxy/client/core/ProxyClientService.java | 65 ++++++++++--------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/neutrino-proxy-client/src/main/java/fun/asgc/neutrino/proxy/client/core/ProxyClientService.java b/neutrino-proxy-client/src/main/java/fun/asgc/neutrino/proxy/client/core/ProxyClientService.java index aea79251..090fb277 100644 --- a/neutrino-proxy-client/src/main/java/fun/asgc/neutrino/proxy/client/core/ProxyClientService.java +++ b/neutrino-proxy-client/src/main/java/fun/asgc/neutrino/proxy/client/core/ProxyClientService.java @@ -22,10 +22,7 @@ package fun.asgc.neutrino.proxy.client.core; -import fun.asgc.neutrino.core.annotation.Autowired; -import fun.asgc.neutrino.core.annotation.Bean; -import fun.asgc.neutrino.core.annotation.Component; -import fun.asgc.neutrino.core.annotation.NonIntercept; +import fun.asgc.neutrino.core.annotation.*; import fun.asgc.neutrino.core.base.CustomThreadFactory; import fun.asgc.neutrino.core.context.Environment; import fun.asgc.neutrino.core.util.FileUtil; @@ -84,32 +81,16 @@ public class ProxyClientService { /** * 启用重连服务 */ - private volatile boolean reconnectServiceEnable = true; + private volatile boolean reconnectServiceEnable = false; /** * 重连服务执行器 */ private static final ScheduledExecutorService reconnectExecutor = Executors.newSingleThreadScheduledExecutor(new CustomThreadFactory("ClientReconnect")); - - public void ProxyClientService() { + @Init + public void init() { this.reconnectExecutor.scheduleWithFixedDelay(this::reconnect, 0, RECONNECT_INTERVAL_SECONDS, TimeUnit.SECONDS); - } - public void start() { - if (StringUtil.isEmpty(proxyConfig.getLicenseKey())) { - return; - } - if (null == channel || !channel.isActive()) { - connectProxyServer(); - } else { - channel.writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getLicenseKey())); - } - } - - /** - * 连接代理服务器 - */ - private void connectProxyServer() { workerGroup = new NioEventLoopGroup(); realServerBootstrap.group(workerGroup); realServerBootstrap.channel(NioSocketChannel.class); @@ -132,13 +113,34 @@ public class ProxyClientService { } ch.pipeline().addLast(new ProxyMessageDecoder(proxyConfig.getProtocol().getMaxFrameLength(), - proxyConfig.getProtocol().getLengthFieldOffset(), proxyConfig.getProtocol().getLengthFieldLength(), - proxyConfig.getProtocol().getLengthAdjustment(), proxyConfig.getProtocol().getInitialBytesToStrip())); + proxyConfig.getProtocol().getLengthFieldOffset(), proxyConfig.getProtocol().getLengthFieldLength(), + proxyConfig.getProtocol().getLengthAdjustment(), proxyConfig.getProtocol().getInitialBytesToStrip())); ch.pipeline().addLast(new ProxyMessageEncoder()); ch.pipeline().addLast(new IdleStateHandler(proxyConfig.getProtocol().getReadIdleTime(), proxyConfig.getProtocol().getWriteIdleTime(), proxyConfig.getProtocol().getAllIdleTimeSeconds())); ch.pipeline().addLast(new ClientChannelHandler()); } }); + } + + public void start() { + if (StringUtil.isEmpty(proxyConfig.getLicenseKey())) { + return; + } + if (null == channel || !channel.isActive()) { + try { + connectProxyServer(); + } catch (Exception e) { + log.error("启动异常", e); + } + } else { + channel.writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getLicenseKey())); + } + } + + /** + * 连接代理服务器 + */ + private void connectProxyServer() throws InterruptedException { bootstrap.connect(proxyConfig.getClient().getServerIp(), proxyConfig.getClient().getServerPort()) .addListener(new ChannelFutureListener() { @@ -151,13 +153,13 @@ public class ProxyClientService { future.channel().writeAndFlush(ProxyMessage.buildAuthMessage(proxyConfig.getLicenseKey())); log.info("连接代理服务成功. channelId:{}", future.channel().id().asLongText()); + reconnectServiceEnable = true; reconnectCount = 0; } else { log.info("连接代理服务失败!"); - System.exit(-1); } } - }); + }).sync(); } private ChannelHandler createSslHandler() { @@ -187,11 +189,16 @@ public class ProxyClientService { if (!reconnectServiceEnable) { return; } - if (channel.isActive()) { + if (null != channel && channel.isActive()) { return; } log.info("客户端重连 seq:{}", ++reconnectCount); - connectProxyServer(); + try { + connectProxyServer(); + } catch (Exception e) { + log.error("重连异常", e); + } + System.out.println("1"); } @Bean