From 029831451b29a13fe9c42164d5a7b7f9032b6188 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 24 Mar 2023 11:45:22 +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