Преглед изворни кода

update 优化 sse 删除之后 手动触发完成 防止内存泄漏

疯狂的狮子Li пре 1 година
родитељ
комит
5868fadbf5

+ 3 - 1
ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java

@@ -39,7 +39,9 @@ public class SseEmitterManager {
         Map<String, SseEmitter> emitters = USER_TOKEN_EMITTERS.computeIfAbsent(userId, k -> new ConcurrentHashMap<>());
         Map<String, SseEmitter> emitters = USER_TOKEN_EMITTERS.computeIfAbsent(userId, k -> new ConcurrentHashMap<>());
 
 
         // 创建一个新的 SseEmitter 实例,超时时间设置为 0 表示无限制
         // 创建一个新的 SseEmitter 实例,超时时间设置为 0 表示无限制
-        SseEmitter emitter = emitters.computeIfAbsent(token, k -> new SseEmitter(0L));
+        SseEmitter emitter = new SseEmitter(0L);
+
+        emitters.put(token, emitter);
 
 
         // 当 emitter 完成、超时或发生错误时,从映射表中移除对应的 token
         // 当 emitter 完成、超时或发生错误时,从映射表中移除对应的 token
         emitter.onCompletion(() -> {
         emitter.onCompletion(() -> {