From 8adb5e06a5fcfad9a634944c0d65fc70c5c2527f Mon Sep 17 00:00:00 2001 From: Tong <1025782220@qq.com> Date: 星期二, 19 四月 2022 10:12:57 +0800 Subject: [PATCH] 去掉依赖库 --- HDLSDK/hdl-socket/src/main/java/com/hdl/sdk/socket/SocketBoot.java | 74 ++++++++++++++++++++++++++++-------- 1 files changed, 57 insertions(+), 17 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..cf36c7d 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,19 @@ 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.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.concurrent.BlockingQueue; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; 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,13 +24,24 @@ 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鏄惁宸茬粡杩炴帴 */ - private boolean connected=false; + private boolean connected = false; public IClient getClient() { return client; @@ -43,13 +49,14 @@ private final BlockingQueue<SocketRequest> mMessageQueue = new LinkedBlockingDeque<>(); - private final ArrayMap<String, SendListener> sendMap = new ArrayMap<>(); + private final ConcurrentMap<String, SendListener> sendMap = new ConcurrentHashMap<>(); public SocketBoot(IClient client) { this.client = client; initConnectThread(); initReceiveThread(); initSendThread(); + initHeartbeat(); } /** @@ -59,12 +66,13 @@ try { LogUtils.i("TCP杩炴帴"); client.onConnectStatus(ConnectStatus.CONNECTING); - Thread.sleep(700); + Thread.sleep(1000); client.connect(); - connected=true; + connected = true; + LogUtils.i("TCP杩炴帴鎴愬姛"); client.onConnectStatus(ConnectStatus.CONNECTED); - }catch(Exception e) { - LogUtils.e("杩炴帴寮傚父"+e.getMessage()); + } catch (Exception e) { + LogUtils.e("杩炴帴寮傚父" + e.getMessage()); } } @@ -125,6 +133,7 @@ if (connected) { //璇诲彇鏁版嵁 client.onHandleResponse(); + time = System.currentTimeMillis(); } else { try { Thread.sleep(1000); @@ -157,15 +166,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()); + } + } + } + }); + } + } + + /** * 閲嶆柊杩炴帴 */ @@ -176,6 +215,7 @@ /** * 鍙戦�佹棤闇�鍥炶皟 + * * @param msg 鍙戦�佺殑鏁版嵁 */ public void sendMsg(byte[] msg) { @@ -194,7 +234,7 @@ } mMessageQueue.put(request); } catch (Exception e) { - + LogUtils.e("鍙戦�佹暟鎹け璐ワ細" + e.getMessage()); } } -- Gitblit v1.8.0