tsurumure 5 сар өмнө
parent
commit
f796780318

+ 11 - 2
src/main/java/com/backendsys/modules/sse/utils/SseUtil.java

@@ -106,10 +106,19 @@ public class SseUtil {
                 String dataStr = (new SseResponse(SseResponseEnum.DISCONNECT)).toJsonStr();
                 oldEmitter.send(SseEmitter.event().data(dataStr));
                 oldEmitter.complete();              // 关闭旧的连接
-                manager.removeEmitter(oldEmitter);  // 从管理器中移除旧的连接
             } catch (IOException e) {
                 System.out.println(e.getMessage());
-                manager.removeEmitter(oldEmitter);
+            } finally {
+                manager.removeEmitter(oldEmitter);  // 从管理器中移除旧的连接
+                // 如果需要,可以在这里显式关闭底层资源
+                if (oldEmitter != null) {
+                    System.out.println("oldEmitter 仍然未关闭");
+                    try {
+                        oldEmitter.complete();  // 再次尝试关闭
+                    } catch (Exception e) {
+                        System.err.println("Failed to forcefully close emitter: " + e.getMessage());
+                    }
+                }
             }
         }
     }