From cdb4f45b507e52f67c235b6d4b7307ec194f02a1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Wed, 01 Feb 2023 09:51:43 +0800 Subject: [PATCH] 1 --- src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java | 71 +++++++++++++++++++++++++---------- 1 files changed, 51 insertions(+), 20 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 db98065..deacdd9 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; @@ -80,37 +83,65 @@ 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 { 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(); + web3j = Web3j.build(ws); + assert chain != null; + 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); + + }); + }catch(WebsocketNotConnectedException e){ + ws.close(); 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(); + 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); + + }); } - } - - 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()); - - - 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