From a762b59c2c4b459f72ede19716d476bb3513f622 Mon Sep 17 00:00:00 2001
From: gerson <1405270578@qq.com>
Date: 星期四, 20 二月 2025 08:27:57 +0800
Subject: [PATCH] 获取位置

---
 src/utils/sse/SSEClient.ts |   28 +++++++++++++++++++++++++---
 1 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/src/utils/sse/SSEClient.ts b/src/utils/sse/SSEClient.ts
index e277c30..5e727f7 100644
--- a/src/utils/sse/SSEClient.ts
+++ b/src/utils/sse/SSEClient.ts
@@ -3,6 +3,8 @@
 import { SESSION_KEY } from '../request';
 import { Local } from '../storage';
 import { debounce } from 'lodash-es';
+import { Logger } from '/@/model/logger/Logger';
+
 export interface SSEOptions {
 	/** 閲嶈瘯寤惰繜(ms) */
 	retryDelay?: number;
@@ -28,10 +30,13 @@
 	onRetry?: () => void;
 }
 
+export type MessageHandler = (data: any) => void;
+
 export class SSEClient {
 	private eventSource: EventSource | null = null;
 	private reconnectTimeout: number | null = null;
 	private abortController: AbortController | null = null;
+	private messageHandlers: Set<MessageHandler> = new Set();
 
 	constructor(private url: string, private options: SSEOptions = {}, private callbacks: SSEEventCallbacks = {}) {
 		// 璁剧疆榛樿鍊�
@@ -44,6 +49,20 @@
 			},
 			...options,
 		};
+	}
+
+	/**
+	 * 璁㈤槄娑堟伅
+	 */
+	subscribe(handler: MessageHandler): void {
+		this.messageHandlers.add(handler);
+	}
+
+	/**
+	 * 鍙栨秷璁㈤槄娑堟伅
+	 */
+	unsubscribe(handler: MessageHandler): void {
+		this.messageHandlers.delete(handler);
 	}
 
 	/**
@@ -74,11 +93,12 @@
 		if (!this.eventSource) return;
 
 		this.eventSource.onopen = () => {
-			console.log('杩炴帴鎴愬姛');
+			Logger.info('eventSource onopen锛氳繛鎺ユ垚鍔�');
 			this.callbacks.onOpen?.();
 		};
 
 		this.eventSource.onmessage = (event) => {
+			Logger.info('eventSource onmessage锛歕n\n'+ event.data);
 			try {
 				const data = JSON.parse(event.data);
 				// 妫�鏌ユ槸鍚︽槸缁撴潫鏍囪
@@ -86,6 +106,9 @@
 					this.disconnect();
 					return;
 				}
+				// 閫氱煡鎵�鏈夎闃呰��
+				this.messageHandlers.forEach(handler => handler(data));
+				// 璋冪敤鍘熸湁鐨勫洖璋�
 				this.callbacks.onMessage?.(data);
 			} catch (error) {
 				console.error('Failed to parse SSE data:', error);
@@ -94,6 +117,7 @@
 		};
 
 		this.eventSource.onerror = async (error) => {
+			Logger.error('eventSource onerror锛歕n\n'+ error);
 		};
 	}
 
@@ -113,8 +137,6 @@
 			this.disconnect();
 		}
 	}
-
-	
 
 	/**
 	 * 鏂紑杩炴帴

--
Gitblit v1.9.3