From aa9a0732d61e7921a4119975a5e49b854d98b4c8 Mon Sep 17 00:00:00 2001 From: Azure <983547216@qq.com> Date: Wed, 24 Jun 2026 12:42:34 +0800 Subject: [PATCH] feat: sse --- .../webgamebackend/sse/SseConnectionManager.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/webgame/webgamebackend/sse/SseConnectionManager.java b/src/main/java/com/webgame/webgamebackend/sse/SseConnectionManager.java index 19f2da8..233005f 100644 --- a/src/main/java/com/webgame/webgamebackend/sse/SseConnectionManager.java +++ b/src/main/java/com/webgame/webgamebackend/sse/SseConnectionManager.java @@ -99,7 +99,11 @@ public class SseConnectionManager { } /** - * 移除连接 + * 移除连接(仅清理内部 Map,不操作 SseEmitter) + * + * SseEmitter 生命周期由 Spring 管理(onCompletion/onTimeout/onError 回调), + * 此方法仅负责从内部映射表中移除引用。不调用 emitter.complete(), + * 避免向已断开的客户端写入数据导致 IOException 扩散到 GlobalExceptionHandler。 * * @param userId 用户账号 ID * @param connectionId 连接 ID @@ -116,11 +120,6 @@ public class SseConnectionManager { } if (removed != null) { - try { - removed.complete(); - } catch (Throwable ignored) { - // 客户端断开后响应可能已不可用 - } log.info("[SSE] 连接已移除, userId={}, connectionId={}, onlineConnections={}", userId, connectionId, getOnlineCount()); }