| | |
| | | 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); |
| | |
| | | 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); |
| | | } |
| | | }); |
| | | |
| | |
| | | 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); |
| | |
| | | while (retries-- > 0) { |
| | | try { |
| | | Thread.sleep(1000); |
| | | wssContractEventListener(startBlock, event, type); |
| | | wssContractEventListener2(startBlock, event, type); |
| | | return; |
| | | } catch (Exception ex) { |
| | | log.error("币安监听异常", ex); |
| | |
| | | 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); |