xiaoyong931011
2023-01-17 432256e9c67bb5cfab2e7df3971fdb5c50301647
20221227 充值归集
1 files modified
45 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java 45 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/chain/service/ChainService.java
@@ -8,6 +8,7 @@
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;
@@ -82,6 +83,7 @@
        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"));
@@ -111,18 +113,45 @@
        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();
        }