From 35b2d6c0193bead398d5bc8754bbbf59e0a35b00 Mon Sep 17 00:00:00 2001 From: SL Date: Tue, 14 Jan 2025 15:52:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=A2=91=E9=81=93=E8=B5=84=E6=96=99=E5=8D=A1=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xinbida/wukongim/manager/ChannelManager.java | 3 ++- .../xinbida/wukongim/manager/ConversationManager.java | 5 ++++- .../java/com/xinbida/wukongim/message/WKProto.java | 9 ++------- .../java/com/xinbida/wukongim/utils/CryptoUtils.java | 10 +++------- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java b/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java index 1d30cc1..fdf966f 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/manager/ChannelManager.java @@ -22,6 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; /** * 5/20/21 5:49 PM @@ -43,7 +44,7 @@ public class ChannelManager extends BaseManager { private IRefreshChannelAvatar iRefreshChannelAvatar; private IGetChannelInfo iGetChannelInfo; - private final List wkChannelList = Collections.synchronizedList(new ArrayList<>()); + private final CopyOnWriteArrayList wkChannelList = new CopyOnWriteArrayList<>(); //监听刷新频道 private ConcurrentHashMap refreshChannelMap; diff --git a/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java b/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java index 6c3d3e4..7cbcef4 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java +++ b/wkim/src/main/java/com/xinbida/wukongim/manager/ConversationManager.java @@ -24,6 +24,7 @@ import com.xinbida.wukongim.interfaces.ISyncConversationChat; import com.xinbida.wukongim.interfaces.ISyncConversationChatBack; import com.xinbida.wukongim.message.type.WKConnectStatus; import com.xinbida.wukongim.message.type.WKMsgContentType; +import com.xinbida.wukongim.utils.DispatchQueuePool; import com.xinbida.wukongim.utils.WKCommonUtils; import com.xinbida.wukongim.utils.WKLoggerUtils; @@ -41,6 +42,8 @@ import java.util.concurrent.ConcurrentHashMap; * 最近会话管理 */ public class ConversationManager extends BaseManager { + private final DispatchQueuePool dispatchQueuePool = new DispatchQueuePool(3); + private final String TAG = "ConversationManager"; private ConversationManager() { @@ -238,7 +241,7 @@ public class ConversationManager extends BaseManager { long version = ConversationDbManager.getInstance().queryMaxVersion(); String lastMsgSeqStr = ConversationDbManager.getInstance().queryLastMsgSeqs(); runOnMainThread(() -> iSyncConversationChat.syncConversationChat(lastMsgSeqStr, 20, version, syncChat -> { - new Thread(() -> saveSyncChat(syncChat, () -> iSyncConversationChatBack.onBack(syncChat))).start(); + dispatchQueuePool.execute(() -> saveSyncChat(syncChat, () -> iSyncConversationChatBack.onBack(syncChat))); })); } } diff --git a/wkim/src/main/java/com/xinbida/wukongim/message/WKProto.java b/wkim/src/main/java/com/xinbida/wukongim/message/WKProto.java index f88912d..d71615f 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/message/WKProto.java +++ b/wkim/src/main/java/com/xinbida/wukongim/message/WKProto.java @@ -220,11 +220,6 @@ class WKProto { receivedMsg.topicID = wkRead.readString(); } String content = wkRead.readPayload(); -<<<<<<< HEAD -======= - WKLoggerUtils.getInstance().e(TAG, "消息payload:" + content); - receivedMsg.payload = CryptoUtils.getInstance().aesDecrypt(CryptoUtils.getInstance().base64Decode(content)); ->>>>>>> 9978523a9a818731b66c2409ff4c0cba70fab46f String msgKey = receivedMsg.messageID + receivedMsg.messageSeq + receivedMsg.clientMsgNo @@ -239,13 +234,13 @@ class WKProto { } String base64Result = CryptoUtils.getInstance().base64Encode(result); String localMsgKey = CryptoUtils.getInstance().digestMD5(base64Result); - WKLoggerUtils.getInstance().e("Receive message:"); - WKLoggerUtils.getInstance().e(receivedMsg.toString()); if (!localMsgKey.equals(receivedMsg.msgKey)) { WKLoggerUtils.getInstance().e("Illegal messages,localMsgKey:" + localMsgKey + ",msgKey:" + msgKey); return null; } receivedMsg.payload = CryptoUtils.getInstance().aesDecrypt(CryptoUtils.getInstance().base64Decode(content)); + WKLoggerUtils.getInstance().e("Receive message:"); + WKLoggerUtils.getInstance().e(receivedMsg.toString()); } catch (IOException e) { WKLoggerUtils.getInstance().e(TAG, "deReceivedMsg Decoding received message error"); } diff --git a/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java b/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java index ec61c84..f05d860 100644 --- a/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java +++ b/wkim/src/main/java/com/xinbida/wukongim/utils/CryptoUtils.java @@ -102,12 +102,8 @@ public class CryptoUtils { } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException e) { -<<<<<<< HEAD - WKLoggerUtils.getInstance().e(TAG,"aesEncrypt encrypt error"); - return null; -======= - WKLoggerUtils.getInstance().e(TAG, "aesEncrypt encrypt error"); ->>>>>>> 9978523a9a818731b66c2409ff4c0cba70fab46f + WKLoggerUtils.getInstance().e(TAG,"aesEncrypt encrypt error"); + return null; } if (encrypted == null) { WKLoggerUtils.getInstance().e(TAG, "aesEncrypt The encrypted data is empty"); @@ -143,7 +139,7 @@ public class CryptoUtils { public byte[] base64Decode(String data) { - return Base64.decode(data, Base64.NO_WRAP); + return Base64.decode(data, Base64.NO_WRAP); } /**