xiaoyong931011
2023-03-24 90473aa33326df65173da7672aa869ae18fbb4ab
src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.mall.chain.enums.ChainEnum;
import cc.mrbird.febs.mall.chain.enums.EthService;
import cn.hutool.core.util.ObjectUtil;
import com.alipay.api.java_websocket.enums.ReadyState;
import io.reactivex.Flowable;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
@@ -164,11 +165,36 @@
            Web3j web3j = Web3j.build(ws);
            EthUsdtContract ethUsdtContract = wssContract(chain.getPrivateKey(), chain.getContractAddress(), web3j);
            EthFilter filter = getFilter(startBlock, startBlock, chain.getContractAddress());
            Flowable<EthUsdtContract.TransferEventResponse> eventFlowable = ethUsdtContract.transferEventFlowable(filter);
            while (!webSocketClient.getReadyState().equals(ReadyState.OPEN)) {
                log.info("连接中···请稍后");
                int retries = 3;
                while (retries-- > 0) {
                    try {
                        Thread.sleep(1000);
                        wssContractEventListener2(startBlock, event, type);
                        return;
                    } catch (Exception ex) {
                        log.error("币安监听异常", ex);
                    }
                }
                return;
            }
            // 判断websocket是否连接成功
            if (!webSocketClient.isOpen()) {
                log.error("WebSocket连接失败");
                int retries = 3;
                while (retries-- > 0) {
                    try {
                        Thread.sleep(1000);
                        wssContractEventListener2(startBlock, event, type);
                        return;
                    } catch (Exception ex) {
                        log.error("币安监听异常", ex);
                    }
                }
                return;
            }
            // 订阅事件流,将事件编译和处理放到单独的线程中执行