疯狂的狮子Li
2024-08-01 2869d590e6ffeb6ab7ff66611e4b74fdddfa0ba7
ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java
@@ -1,5 +1,6 @@
package org.dromara.common.sse.core;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.collection.CollUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.redis.utils.RedisUtils;
@@ -30,6 +31,7 @@
        emitter.onCompletion(() -> emitters.remove(token));
        emitter.onTimeout(() -> emitters.remove(token));
        emitter.onError((e) -> emitters.remove(token));
        try {
            emitter.send(SseEmitter.event().comment("connected"));
@@ -44,7 +46,7 @@
        if (emitters != null) {
            try {
                emitters.get(token).send(SseEmitter.event().comment("disconnected"));
            } catch (IOException ignore) {
            } catch (Exception ignore) {
            }
            emitters.remove(token);
        }
@@ -70,9 +72,13 @@
        if (emitters != null) {
            for (Map.Entry<String, SseEmitter> entry : emitters.entrySet()) {
                try {
                    // token 无效或已过期
                    if (StpUtil.stpLogic.getTokenActiveTimeoutByToken(entry.getKey()) < -1) {
                        emitters.remove(entry.getKey());
                        continue;
                    }
                    entry.getValue().send(SseEmitter.event()
                        .name("message")
                        .reconnectTime(10000L)
                        .data(message));
                } catch (Exception e) {
                    emitters.remove(entry.getKey());