From c057275036cd3e28f2de146e5993c6f97016ffdb Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 22 八月 2023 17:39:20 +0800
Subject: [PATCH] bug修改

---
 socket_manager.py |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/socket_manager.py b/socket_manager.py
index 0971129..9c64bd9 100644
--- a/socket_manager.py
+++ b/socket_manager.py
@@ -1,6 +1,8 @@
 import threading
 import time
 
+from utils import tool
+
 
 class ClientSocketManager:
     # 瀹㈡埛绔被鍨�
@@ -27,7 +29,8 @@
         if _type == cls.CLIENT_TYPE_TRADE:
             if _type in cls.socket_client_dict:
                 # 鏍规嵁鎺掑簭娲昏穬鏃堕棿鎺掑簭
-                client_list = sorted(cls.socket_client_dict[_type], key=lambda x: cls.active_client_dict.get(x[0]) if x[0] in cls.active_client_dict else 0,
+                client_list = sorted(cls.socket_client_dict[_type], key=lambda x: cls.active_client_dict.get(x[0]) if x[
+                                                                                                                          0] in cls.active_client_dict else 0,
                                      reverse=True)
                 for d in client_list:
                     if d[0] in cls.socket_client_lock_dict:
@@ -64,11 +67,19 @@
                 for d in cls.socket_client_dict[t]:
                     if d[0] == rid:
                         cls.socket_client_dict[t].remove(d)
+                        try:
+                            d[1].close()
+                        except:
+                            pass
                         break
 
             elif type(cls.socket_client_dict[t]) == tuple:
                 if cls.socket_client_dict[t][0] == rid:
                     cls.socket_client_dict.pop(t)
+                    try:
+                        t[1].close()
+                    except:
+                        pass
                     break
 
     # 蹇冭烦淇℃伅
@@ -82,4 +93,21 @@
         for k in cls.active_client_dict.keys():
             if time.time() - cls.active_client_dict[k] > 20:
                 # 蹇冭烦鏃堕棿闂撮殧20s浠ヤ笂瑙嗕负鏃犳晥
-                cls.del_client(k)
\ No newline at end of file
+                cls.del_client(k)
+
+    @classmethod
+    def list_client(cls):
+        _type = cls.CLIENT_TYPE_TRADE
+        client_list = sorted(cls.socket_client_dict[_type],
+                             key=lambda x: cls.active_client_dict.get(x[0]) if x[0] in cls.active_client_dict else 0,
+                             reverse=True)
+        fdata = []
+        for client in client_list:
+            active_time = cls.active_client_dict.get(client[0])
+            if active_time is None:
+                active_time = 0
+            active_time = tool.to_time_str(int(active_time))
+            fdata.append(
+                (client[0], cls.socket_client_lock_dict[client[0]].locked(),active_time))
+        return fdata
+

--
Gitblit v1.8.0