From a1b204fd4c5b713a53b464e3f98e5372e1eebf66 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 24 Mar 2023 11:50:53 +0800
Subject: [PATCH] 后台修改
---
src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java | 41 +++++++++++++++++++++++++++++------------
1 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java b/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
index 62faeb7..295e271 100644
--- a/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
+++ b/src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
@@ -158,7 +158,7 @@
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
WebSocketService ws = null;
try{
- WebSocketClient webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16"));
+ WebSocketClient webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/fcb1ae31845147dcabb183db57336218"));
ws = new WebSocketService(webSocketClient, true);
ws.connect();
Web3j web3j = Web3j.build(ws);
@@ -171,16 +171,22 @@
Disposable subscribe = eventFlowable.observeOn(Schedulers.from(executor))
.subscribe(event::compile, error -> {
log.error("币安监听异常", error);
- // 异常情况下,递归重试连接和订阅
- int retries = 3;
- while (retries-- > 0) {
- try {
- Thread.sleep(1000);
- wssContractEventListener(startBlock, event, type);
- return;
- } catch (Exception ex) {
- log.error("币安监听异常", ex);
+ error = error.getCause();
+ if (error instanceof WebsocketNotConnectedException) {
+ log.error("WebSocket连接已断开,正在尝试重新连接...");
+ // 异常情况下,递归重试连接和订阅
+ int retries = 3;
+ while (retries-- > 0) {
+ try {
+ Thread.sleep(1000);
+ wssContractEventListener2(startBlock, event, type);
+ return;
+ } catch (Exception ex) {
+ log.error("币安监听异常", ex);
+ }
}
+ } else {
+ log.error("币安监听异常", error);
}
});
@@ -192,6 +198,17 @@
subscribe.dispose();
} catch (InterruptedException e) {
e.printStackTrace();
+ // 将递归重试连接和订阅改为有限次数的重试,避免出现无限递归的情况
+ int retries = 3;
+ while (retries-- > 0) {
+ try {
+ Thread.sleep(1000);
+ wssContractEventListener2(startBlock, event, type);
+ return;
+ } catch (Exception ex) {
+ log.error("币安监听异常", ex);
+ }
+ }
}
} catch (Exception e) {
log.error("币安监听异常", e);
@@ -201,7 +218,7 @@
while (retries-- > 0) {
try {
Thread.sleep(1000);
- wssContractEventListener(startBlock, event, type);
+ wssContractEventListener2(startBlock, event, type);
return;
} catch (Exception ex) {
log.error("币安监听异常", ex);
@@ -220,7 +237,7 @@
Web3j web3j = null;
try {
- webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16"));
+ webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/fcb1ae31845147dcabb183db57336218"));
ws = new WebSocketService(webSocketClient, true);
ws.connect();
web3j = Web3j.build(ws);
--
Gitblit v1.9.1