From 8049faa20ca33b159f6384bbbc2d3429ad8be41b Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Tue, 17 Jan 2023 20:36:24 +0800 Subject: [PATCH] 20221227 充值归集 --- src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java | 73 ++++++++++++++++++++++++++++++++---- 1 files changed, 65 insertions(+), 8 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 732ec34..5e50cc6 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 @@ -3,9 +3,12 @@ import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.mall.chain.enums.ChainEnum; import cc.mrbird.febs.mall.chain.enums.EthService; +import cn.hutool.core.util.ObjectUtil; import io.reactivex.Flowable; import io.reactivex.disposables.Disposable; import lombok.extern.slf4j.Slf4j; +import org.java_websocket.WebSocket; +import org.java_websocket.exceptions.WebsocketNotConnectedException; import org.web3j.crypto.Credentials; import org.web3j.protocol.Web3j; import org.web3j.protocol.core.DefaultBlockParameter; @@ -18,7 +21,9 @@ import org.web3j.tx.gas.StaticGasProvider; import java.math.BigInteger; +import java.net.ConnectException; import java.net.URI; +import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; @@ -78,23 +83,75 @@ WebSocketService ws = null; WebSocketClient webSocketClient = null; Web3j web3j = null; + ChainEnum chain = ChainEnum.getValueByName(type); try { webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16")); ws = new WebSocketService(webSocketClient, true); ws.connect(); + } catch (Exception e) { + try { + ws.close(); + //TODO + if(ObjectUtil.isEmpty(webSocketClient)){ + webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16")); + ws = new WebSocketService(webSocketClient, true); + ws.connect(); + } + WebSocket.READYSTATE readyState = webSocketClient.getReadyState(); + if((WebSocket.READYSTATE.OPEN != readyState + && WebSocket.READYSTATE.CONNECTING != readyState)){ + webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16")); + ws = new WebSocketService(webSocketClient, true); + ws.connect(); + } + } catch (Exception connectException) { + connectException.printStackTrace(); + } + } + + + try { web3j = Web3j.build(ws); - ChainEnum chain = ChainEnum.getValueByName(type); + assert chain != null; - - EthUsdtContract ethUsdtContract = wssContract(chain.getPrivateKey(), chain.getContractAddress(), web3j); - EthFilter filter = getFilter(startBlock, startBlock, chain.getContractAddress()); + try{ + EthUsdtContract ethUsdtContract = wssContract(chain.getPrivateKey(), chain.getContractAddress(), web3j); + EthFilter filter = getFilter(startBlock, startBlock, chain.getContractAddress()); - Flowable<EthUsdtContract.TransferEventResponse> eventFlowable = ethUsdtContract.transferEventFlowable(filter); - Disposable subscribe = eventFlowable.subscribe(event::compile, error -> { - log.error("币安监听异常", error); - }); + Flowable<EthUsdtContract.TransferEventResponse> eventFlowable = ethUsdtContract.transferEventFlowable(filter); + Disposable subscribe = eventFlowable.subscribe(event::compile, error -> { + log.error("币安监听异常", error); + + }); + }catch(WebsocketNotConnectedException e){ + ws.close(); + if(ObjectUtil.isEmpty(webSocketClient)){ + webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16")); + ws = new WebSocketService(webSocketClient, true); + ws.connect(); + } + WebSocket.READYSTATE readyState = webSocketClient.getReadyState(); + if((WebSocket.READYSTATE.OPEN != readyState + && WebSocket.READYSTATE.CONNECTING != readyState)){ + webSocketClient = new WebSocketClient(new URI("wss://bsc-mainnet.nodereal.io/ws/v1/78074065950e4915aef4f12b6f357d16")); + ws = new WebSocketService(webSocketClient, true); + ws.connect(); + } + web3j = Web3j.build(ws); + assert chain != null; + EthUsdtContract ethUsdtContract = wssContract(chain.getPrivateKey(), chain.getContractAddress(), web3j); + EthFilter filter = getFilter(startBlock, startBlock, chain.getContractAddress()); + + + Flowable<EthUsdtContract.TransferEventResponse> eventFlowable = ethUsdtContract.transferEventFlowable(filter); + Disposable subscribe = eventFlowable.subscribe(event::compile, error -> { + log.error("币安监听异常", error); + + }); + } + } catch (Exception e) { e.printStackTrace(); } -- Gitblit v1.9.1