mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-18 09:35:29 +08:00
update 优化 sse 心跳检测写法
This commit is contained in:
parent
9ba0b0ef69
commit
40e13ce136
@ -116,24 +116,19 @@ public class SseEmitterManager {
|
||||
* SSE心跳检测,关闭无效连接
|
||||
*/
|
||||
public void sseMonitor() {
|
||||
log.info("开始执行 SSE 心跳检测");
|
||||
for (Map.Entry<Long, Map<String, SseEmitter>> userEmitters : USER_TOKEN_EMITTERS.entrySet()) {
|
||||
Map<String, SseEmitter> emitters = userEmitters.getValue();
|
||||
if (MapUtil.isNotEmpty(emitters)) {
|
||||
for (Map.Entry<String, SseEmitter> entry : emitters.entrySet()) {
|
||||
try {
|
||||
// 向客户端发送心跳
|
||||
entry.getValue().send(SseEmitter.event().comment("heartbeat"));
|
||||
} catch (Exception e) {
|
||||
log.warn("心跳发送失败, 关闭连接: userId={}, token={}", userEmitters.getKey(), entry.getKey());
|
||||
SseEmitter remove = emitters.remove(entry.getKey());
|
||||
if (remove != null) {
|
||||
remove.complete();
|
||||
}
|
||||
}
|
||||
log.info("开始 SSE 心跳");
|
||||
USER_TOKEN_EMITTERS.forEach((userId, map) ->
|
||||
map.entrySet().removeIf(e -> {
|
||||
try {
|
||||
e.getValue().send(SseEmitter.event().comment("heartbeat"));
|
||||
return false;
|
||||
} catch (Exception ex) {
|
||||
log.warn("心跳失败,移除连接: userId={}, token={}", userId, e.getKey());
|
||||
e.getValue().complete();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user