From cc6023291bc94a229b53d7c2d83bf2b39bbfa9a0 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期日, 27 三月 2022 21:27:29 +0800 Subject: [PATCH] 华尔思线上版本库 --- HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 51 insertions(+), 4 deletions(-) diff --git a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java index 74e0940..92f8f84 100644 --- a/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java +++ b/HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java @@ -5,13 +5,18 @@ import androidx.collection.ArrayMap; +import com.google.gson.JsonObject; +import com.hdl.sdk.common.config.TopicConstant; +import com.hdl.sdk.common.utils.IdUtils; import com.hdl.sdk.common.utils.LogUtils; import com.hdl.sdk.common.utils.ThreadToolUtils; import com.hdl.sdk.socket.annotation.ConnectStatus; import com.hdl.sdk.socket.client.IClient; +import com.hdl.sdk.socket.client.IHeartbeat; import com.hdl.sdk.socket.listener.SendListener; import java.net.ConnectException; +import java.util.Date; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; @@ -29,8 +34,17 @@ private ExecutorService connectThread; private ExecutorService sendThread; private ExecutorService receiveThread; + private ExecutorService heartbeatThread; private final IClient client; + private IHeartbeat iHeartbeat; + public void SetHeartbeat(IHeartbeat iHeartbeat){ + this.iHeartbeat=iHeartbeat; + } + /** + * 褰撳墠鎺ユ敹鍒版暟鎹殑鏃堕棿 + */ + private static long time=System.currentTimeMillis(); /** * tcp鏄惁宸茬粡杩炴帴 @@ -50,6 +64,7 @@ initConnectThread(); initReceiveThread(); initSendThread(); + initHeartbeat(); } /** @@ -59,9 +74,10 @@ try { LogUtils.i("TCP杩炴帴"); client.onConnectStatus(ConnectStatus.CONNECTING); - Thread.sleep(700); + Thread.sleep(1000); client.connect(); connected=true; + LogUtils.i("TCP杩炴帴鎴愬姛"); client.onConnectStatus(ConnectStatus.CONNECTED); }catch(Exception e) { LogUtils.e("杩炴帴寮傚父"+e.getMessage()); @@ -125,6 +141,7 @@ if (connected) { //璇诲彇鏁版嵁 client.onHandleResponse(); + time= System.currentTimeMillis(); } else { try { Thread.sleep(1000); @@ -157,15 +174,45 @@ if (!connected) { reconect(); } - Thread.sleep(10*1000); + Thread.sleep(3*1000); } catch (Exception e) { - + LogUtils.e("瀹氭椂杩炴帴澶辫触:" + e.getMessage()); } } } }); } } + + /** + * 鍒濆鍖栭噸鏂板績璺崇嚎绋� + */ + private void initHeartbeat() { + if (heartbeatThread == null) { + heartbeatThread = ThreadToolUtils.getInstance().newFixedThreadPool(1); + heartbeatThread.execute(new Runnable() { + @Override + public void run() { + while (true) { + try { + //10绉� + if (connected && 10 * 1000 < (System.currentTimeMillis() - time)) { + time = System.currentTimeMillis(); + //蹇冭烦妫�娴� + if (iHeartbeat != null) + iHeartbeat.heartbeat(); + } + Thread.sleep(1000); + } catch (Exception e) { + LogUtils.e("瀹氭椂蹇冭烦妫�娴嬬綉鍏冲紓甯革細" + e.getMessage()); + } + } + } + }); + } + } + + /** * 閲嶆柊杩炴帴 */ @@ -194,7 +241,7 @@ } mMessageQueue.put(request); } catch (Exception e) { - + LogUtils.e("鍙戦�佹暟鎹け璐ワ細" + e.getMessage()); } } -- Gitblit v1.8.0