From a3f9e5ce8dce3d86a60a79b85ce44424a612c6fa Mon Sep 17 00:00:00 2001 From: 562935844@qq.com Date: 星期五, 13 五月 2022 14:06:45 +0800 Subject: [PATCH] 提交jar版本 --- HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java | 66 +++++++++++++++++++++++++------- 1 files changed, 51 insertions(+), 15 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..0965fc7 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 @@ -1,24 +1,18 @@ package com.hdl.sdk.socket; -import android.text.TextUtils; -import android.util.Log; - -import androidx.collection.ArrayMap; - import com.hdl.sdk.common.utils.LogUtils; +import com.hdl.sdk.common.utils.TextUtils; 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.HashMap; +import java.util.Map; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.LinkedBlockingDeque; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicInteger; /** * Created by Tong on 2021/9/26. @@ -29,8 +23,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鏄惁宸茬粡杩炴帴 @@ -43,13 +46,14 @@ private final BlockingQueue<SocketRequest> mMessageQueue = new LinkedBlockingDeque<>(); - private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>(); + private final Map<String, SendListener> sendMap = new HashMap<>(); public SocketBoot(IClient client) { this.client = client; initConnectThread(); initReceiveThread(); initSendThread(); + initHeartbeat(); } /** @@ -59,9 +63,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 +130,7 @@ if (connected) { //璇诲彇鏁版嵁 client.onHandleResponse(); + time= System.currentTimeMillis(); } else { try { Thread.sleep(1000); @@ -157,15 +163,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 +230,7 @@ } mMessageQueue.put(request); } catch (Exception e) { - + LogUtils.e("鍙戦�佹暟鎹け璐ワ細" + e.getMessage()); } } -- Gitblit v1.8.0