From ccb47a55a4ed9f3dbcaca9d40d8142515a91bdbe Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 07 Aug 2024 03:44:00 +0800
Subject: [PATCH] 1
---
mexcClient/src/main/java/org/example/mexcclient/wsClient/MexcClient.java | 77 +++++++++++++++++++-------------------
1 files changed, 38 insertions(+), 39 deletions(-)
diff --git a/mexcClient/src/main/java/org/example/mexcclient/wsClient/MexcClient.java b/mexcClient/src/main/java/org/example/mexcclient/wsClient/MexcClient.java
index 8f2a2c1..3d1f18e 100644
--- a/mexcClient/src/main/java/org/example/mexcclient/wsClient/MexcClient.java
+++ b/mexcClient/src/main/java/org/example/mexcclient/wsClient/MexcClient.java
@@ -49,7 +49,7 @@
this.executorService = Executors.newScheduledThreadPool(1);
}
- public void start() throws Exception {
+ public void start() {
try {
connect();
if (session == null) {
@@ -71,7 +71,6 @@
} catch (Exception e) {
log.error("mexc ws 连接过程中发生异常:" + e.getMessage(), e); // 记录连接过程中发生的异常
- throw e;
} finally {
executorService.shutdown();
}
@@ -146,50 +145,50 @@
@OnClose
public void onClose() throws Exception {
log.info("mexc ws 连接已关闭,尝试重新连接...");
- throw new Exception();
+ handleConnectionClosedOrError();
}
@OnError
public void onError(Throwable throwable) throws Exception {
log.error("mexc ws 发生错误: " + throwable.getMessage(), throwable);
- throw new Exception();
+ handleConnectionClosedOrError();
}
-// private void handleConnectionClosedOrError() {
-// synchronized (lock) {
-// if (!reconnecting) {
-// reconnecting = true; // 设置 reconnecting 为 true 表示开始重连
-// executorService.execute(this::attemptReconnect); // 使用 execute 方法立即执行重连
-// }
-// }
-// }
-//
-// private void attemptReconnect() {
-// boolean doReconnect = true;
-// try {
-// log.info("mexc ws 开始重连");
-// connect(); // 假设 connect() 方法用于实际的连接逻辑
-// log.info("mexc ws 重连成功");
-// } catch (Exception e) {
-// log.error("mexc ws 重连失败", e);
-// // 连接失败时,可以根据具体情况决定是否继续重连
-// // 在这里假设总是继续尝试重连
-// } finally {
-// synchronized (lock) {
-// if (doReconnect) {
-// scheduleReconnect(); // 如果需要继续重连,则重新调度重连任务
-// } else {
-// reconnecting = false; // 重连结束后设置 reconnecting 为 false
-// }
-// }
-// }
-// }
-//
-// private void scheduleReconnect() {
-// if (!executorService.isShutdown()) {
-// executorService.schedule(this::attemptReconnect, 5, TimeUnit.SECONDS);
-// }
-// }
+ private void handleConnectionClosedOrError() {
+ synchronized (lock) {
+ if (!reconnecting) {
+ reconnecting = true; // 设置 reconnecting 为 true 表示开始重连
+ executorService.execute(this::attemptReconnect); // 使用 execute 方法立即执行重连
+ }
+ }
+ }
+
+ private void attemptReconnect() {
+ boolean doReconnect = true;
+ try {
+ log.info("mexc ws 开始重连");
+ connect(); // 假设 connect() 方法用于实际的连接逻辑
+ log.info("mexc ws 重连成功");
+ } catch (Exception e) {
+ log.error("mexc ws 重连失败", e);
+ // 连接失败时,可以根据具体情况决定是否继续重连
+ // 在这里假设总是继续尝试重连
+ } finally {
+ synchronized (lock) {
+ if (doReconnect) {
+ scheduleReconnect(); // 如果需要继续重连,则重新调度重连任务
+ } else {
+ reconnecting = false; // 重连结束后设置 reconnecting 为 false
+ }
+ }
+ }
+ }
+
+ private void scheduleReconnect() {
+ if (!executorService.isShutdown()) {
+ executorService.schedule(this::attemptReconnect, 5, TimeUnit.SECONDS);
+ }
+ }
private void sendPing() {
try {
--
Gitblit v1.9.3