From 4da870dd79b5d4e5582367f311eb7f6d31d9b124 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Thu, 9 Jan 2025 11:29:39 +0800 Subject: [PATCH 1/2] fix: ws cleanup before unload --- bun.lockb | Bin 186695 -> 187061 bytes package.json | 10 +++++----- src/context/websocket-provider.tsx | 7 +++++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bun.lockb b/bun.lockb index 292cda8dc3769d91cac0892d4110b46f14f61b4b..fc35a79a8e9cfdbd537a158da9a0d60d99be4494 100755 GIT binary patch delta 22263 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 = ({ url, child useEffect(() => { connect() + // 添加页面卸载事件监听 + const handleBeforeUnload = () => { + cleanup() + } + window.addEventListener('beforeunload', handleBeforeUnload) + return () => { cleanup() + window.removeEventListener('beforeunload', handleBeforeUnload) } }, [url]) From b1c5b6e0a8a41b288cc0b37ee8d8015099cc5f0b Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Thu, 9 Jan 2025 11:33:03 +0800 Subject: [PATCH 2/2] fix: ws cleanup when page visibility change --- src/context/websocket-provider.tsx | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/context/websocket-provider.tsx b/src/context/websocket-provider.tsx index d63bd8a..948d80e 100644 --- a/src/context/websocket-provider.tsx +++ b/src/context/websocket-provider.tsx @@ -106,15 +106,29 @@ export const WebSocketProvider: React.FC = ({ url, child useEffect(() => { connect() + // 添加页面可见性变化监听 + const handleVisibilityChange = () => { + if (document.hidden) { + // 页面隐藏时断开连接 + cleanup() + } else { + // 页面可见时重新连接 + connect() + } + } + // 添加页面卸载事件监听 const handleBeforeUnload = () => { cleanup() } - window.addEventListener('beforeunload', handleBeforeUnload) + + document.addEventListener("visibilitychange", handleVisibilityChange) + window.addEventListener("beforeunload", handleBeforeUnload) return () => { cleanup() - window.removeEventListener('beforeunload', handleBeforeUnload) + document.removeEventListener("visibilitychange", handleVisibilityChange) + window.removeEventListener("beforeunload", handleBeforeUnload) } }, [url])