From 4b18d6aef1b47ab1d42c3c127ce7489b50043da8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 Nov 2020 13:27:13 +0800 Subject: [PATCH 1/2] add DnsManager of websocket --- .../mogo-base-websocket-sdk/build.gradle | 1 + .../base/websocket/WebSocketDnsManager.java | 58 +++++++++++++++++++ .../mogo/base/websocket/WebSocketManager.java | 21 ++++++- 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java diff --git a/foudations/mogo-base-websocket-sdk/build.gradle b/foudations/mogo-base-websocket-sdk/build.gradle index fd207afda9..bc4cc643de 100644 --- a/foudations/mogo-base-websocket-sdk/build.gradle +++ b/foudations/mogo-base-websocket-sdk/build.gradle @@ -42,6 +42,7 @@ dependencies { implementation project(":services:mogo-service-api") implementation project(':modules:mogo-module-common') } + implementation project(':foudations:httpdns-base') } diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java new file mode 100644 index 0000000000..8fa553dafa --- /dev/null +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java @@ -0,0 +1,58 @@ +package com.mogo.base.websocket; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.httpdns.IMogoHttpDns; +import com.mogo.utils.ThreadPoolService; +import com.mogo.utils.logger.Logger; + +import io.reactivex.Scheduler; +import io.reactivex.Single; +import io.reactivex.schedulers.Schedulers; + +public class WebSocketDnsManager { + + private static final String TAG = "WebSocketDnsManager"; + + private WebSocketDnsManager() { + + } + + private static final class Holder { + private static WebSocketDnsManager dnsManager = new WebSocketDnsManager(); + } + + public static WebSocketDnsManager getInstance() { + return Holder.dnsManager; + } + + private WebSocketDns webSocketDns; + private String cacheIp; + + public void getHttpDnsIp(WebSocketDns webSocketDns) { + this.webSocketDns = webSocketDns; + IMogoHttpDns mogoHttpDns = ARouter.getInstance().navigation(IMogoHttpDns.class); + ThreadPoolService.execute(() -> mogoHttpDns.getHttpDnsIp(WebSocketConstant.getSocketServer(), true, ip -> { + Logger.d(TAG, "getHttpDnsIp ip : " + ip + " , 得到Dns IP,准备回调 初始化webSocket"); + this.cacheIp = ip; + this.webSocketDns.getDnsIp(cacheIp != null ? cacheIp : WebSocketConstant.getSocketServer()); + })); + mogoHttpDns.addHttpDnsTtlCallback(WebSocketConstant.getSocketServer(), () -> { + Logger.d(TAG, "ttl callBack ,ready to getCache Dns IP"); + String dnsCacheIp = mogoHttpDns.getCachedHttpDnsIps(WebSocketConstant.getSocketServer()); + if(dnsCacheIp == null){ + return; + } + Logger.d(TAG, "获取缓存Dns IP : " + dnsCacheIp + " , 原缓存 IP : " + cacheIp); + if (cacheIp != null && !cacheIp.equals(dnsCacheIp)) { + this.webSocketDns.ttlIp(dnsCacheIp); + } + }); + } + + public interface WebSocketDns { + + void getDnsIp(String ip); + + void ttlIp(String ip); + } +} diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java index f8d85e6f04..1e9fe4263b 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketManager.java @@ -68,7 +68,26 @@ public class WebSocketManager implements IMogoWebSocketManager, ISocketMsgSettin @Override public void init(Context context, String appId) { - SocketClient.getInstance().getClientProxy().initSocketServer(WebSocketConstant.getSocketServer()); + WebSocketDnsManager.getInstance().getHttpDnsIp(new WebSocketDnsManager.WebSocketDns() { + @Override + public void getDnsIp(String ip) { + Logger.d(TAG,"getDnsIp ip : " + ip); + initWebSocket(ip); + } + + @Override + public void ttlIp(String ip) { + Logger.d(TAG,"ttlIp ip : " + ip); + SocketClient.getInstance().getClientProxy().stop(); + SocketClient.getInstance().getClientProxy().disConnect(); + Logger.d(TAG,"ready to re initWebSocket : " + ip); + initWebSocket(ip); + } + }); + } + + private void initWebSocket(String ip){ + SocketClient.getInstance().getClientProxy().initSocketServer(ip); SocketClient.getInstance().getClientProxy().getMessageSettings(this); SocketClient.getInstance().getClientProxy().addISocketMsgCallBack(this); SocketClient.getInstance().getClientProxy().startConnect(); From 24b0c39b6b03a4101f4763e66f8170ac119b71cf Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 24 Nov 2020 13:29:04 +0800 Subject: [PATCH 2/2] remove unuse code --- .../java/com/mogo/base/websocket/WebSocketDnsManager.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java index 8fa553dafa..c8851ee786 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java @@ -5,10 +5,6 @@ import com.mogo.httpdns.IMogoHttpDns; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.logger.Logger; -import io.reactivex.Scheduler; -import io.reactivex.Single; -import io.reactivex.schedulers.Schedulers; - public class WebSocketDnsManager { private static final String TAG = "WebSocketDnsManager"; @@ -39,7 +35,7 @@ public class WebSocketDnsManager { mogoHttpDns.addHttpDnsTtlCallback(WebSocketConstant.getSocketServer(), () -> { Logger.d(TAG, "ttl callBack ,ready to getCache Dns IP"); String dnsCacheIp = mogoHttpDns.getCachedHttpDnsIps(WebSocketConstant.getSocketServer()); - if(dnsCacheIp == null){ + if (dnsCacheIp == null) { return; } Logger.d(TAG, "获取缓存Dns IP : " + dnsCacheIp + " , 原缓存 IP : " + cacheIp);