From 1f40041e225a01e8a2e6541673260e1fa22adfa9 Mon Sep 17 00:00:00 2001 From: wtz Date: Sat, 4 Apr 2026 12:57:22 +0800 Subject: [PATCH] fix connection bug --- makergen/__pycache__/core.cpython-312.pyc | Bin 5184 -> 5687 bytes makergen/core.py | 17 ++++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/makergen/__pycache__/core.cpython-312.pyc b/makergen/__pycache__/core.cpython-312.pyc index 42033b1468ff2c551e4ac5b2d8b605df7827623e..47df0bf30a9bb52be6b67ec852bdd35989291d4a 100644 GIT binary patch delta 1315 zcmah}Urbw77(eIU-uAY={daq@#kKVoHt4OZY{14aFr6YB+r%)IAQ)4z_ZC-OlMnOkI`HayHHU-{$1vM0|ebfC%Nm-P4jIp_O* zU%!5*w_`uK#&4nhh4#BS6xdCM3>)AAr`r;JooJMqf=)XP~F$Krj9$+De_6W`+d z-6df}Po}bCV_M44RP40(!Fimrf6!ZqHWvDaXDrKnq!^0MSnl!FNFWp`h7xTHwOR7n z6bW1bDkR0Wk4Q0~Fx_WwLexk?3WJ((ha=t-BaTiRdJhys@-AM>qeKAypSKgWP*w|J z{nc^GAK%To)h$+>du%+Uec5ryE8~pw6~W*uRnpAj&rTM?Cj6Vw1rs>vI%@LKJAp!j3bA|&qHp{ZDgzhbFu9)1Q?%NOi7WOP(28iHLVrLD7F zm;frbbM-Oh;iYuWN|w-uzw(}GpW4@_z1f>hWi&(HUcr&t` za_Gh&GLp28PJaPe#_c}Y`XVv)PjJfDaN&}3wW|6`|6D(QZN^a)pI8xVm&DptkAF6I zG56s+R|g87`Wy92o`c1}o|QmsDG)14!4)Z9kmBFAna?K8H-^mQusJ+#9(n8cr_r*c zuL|DTlNV23HkO6ZnjQE9gz}zPTYgds93rKONY5)?L^c#(7x&d2A_0`3&_LlC3I`~> zOrXT2N3(+l8o+;v(VAHjnFfD$p+8Qii_s(Nwg6Z2W$hXuYN4sDaKaxvK-~L#_uqJR zA-9mZ-E1B{UPzoM?Co0P$ibQwgr3@@i5rcOi*8sTSA*a7hyCl4z=f|){0)dIcZ)oD z-uE5fOKK{RJik+7wH47<--9Q`8eTx{#6~^%mcKbh!^la2{&gU_-4FS;^I3IbR6B|W biA$GEKZNa4tm+tq;dMZ9vy-vFNIB;p?I0o} delta 868 zcmb7CO-xfk5Z>wg>1$tKU;EmE3fA%?@Ct%rRWwqRAWAiaU{p{8F>TSxPsw{lscC|T zhL9Lc$i{FXh9l9K)HD$jV^S_&IM|w)An~9FFUCVHH%{)hLgeTs`_1g^%zQJmyV{g# zu&zsz8Ig5*G8=g#E?D=${e}8bHV&%rdPxF!ieErdR+8wZHRK>D$Bn8p-Ckc zUj=DyWL_#Uusd0Z{0{~$I2P5zB?^{MWX+cqbuY!;c`I%fE5L#S;*@O~bRJMl*r7|W ziwr<3{%GleCcIzr8|Cs(vUjNi4@q6F#!iM=^9U3h?C1T=nxE@r@T$~DA_VI(IFUYM zZKvVW@+oM;DY?HQxI2%3JDDYiMcgNPaJS88hmauw!@Dgf06($0**K%J_?^9<=~a0g zP<(beG!nPTJk(=4eFFSJ@$j8Q(VOuvrG=drH49#LzVh`Gn+ip5o$`A$iQuMb{7z(I zcq|&7d}QkiKZpdw&AXNWj=8GwGlv&^IOC`^YS&4GHh_OPs%9`zljwVo_T|dRMpfHy zV;L8L<(fRAGIhKpH>$lWZKoAq_&8ZYFkyYme7`BvMsGLVX=Ml-(b$&0xo zmvXf|d5+%Xc~p65tC+BG6u7bi3tV}DH*$3a1-QCAFK`w-oHwcEr-r=YjsZC8VQ4!~VN6pP+}04Mvx A!2kdN diff --git a/makergen/core.py b/makergen/core.py index 25991b8..5b88bfd 100644 --- a/makergen/core.py +++ b/makergen/core.py @@ -35,17 +35,18 @@ class Device: ) self.on_msg_callback = on_msg_callback if on_msg_callback is not None else lambda _, __ : None self.on_error_callback = on_error_callback if on_error_callback is not None else lambda _ : None + self.is_connected = False def _on_open(self, ws): - print("open") + self.is_connected = True def _on_close(self, ws, close_status_code, close_msg): - print("close") + self.is_connected = False def _on_message(self, ws, message): try: message_str = json.loads(message)["payload"] self.on_msg_callback(message_str["point"], message_str["value"]) - except KeyError or JSONDecodeError: + except (KeyError, JSONDecodeError): self.on_error_callback(ServerException("Page or server sent an invalid message")) except Exception as e: self.on_error_callback(e) @@ -63,15 +64,21 @@ class Device: "timestamp": int(time.time() * 1000) })) - def connect(self): + def connect(self, timeout: float = 5.0): """ 在新线程中运行客户端循环(推荐) """ wst = threading.Thread(target=self.ws.run_forever) wst.daemon = True wst.start() + start_time = time.time() + while not self.is_connected: + if time.time() - start_time > timeout: + if not self.is_connected: + self.on_error_callback(TimeoutError(f"WebSocket connection timed out after {timeout} seconds")) + time.sleep(0.05) - def main_loop(self): +def main_loop(self): """ 在当前线程中运行客户端循环(不推荐) """