From 615ad918ca83328bbec94841747bb70a7ba07a46 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期五, 02 八月 2024 00:55:11 +0800 Subject: [PATCH] update 优化 sse 拦截网络中断io异常 --- ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java | 6 ------ ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java index aa7960c..039e17f 100644 --- a/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java +++ b/ruoyi-common/ruoyi-common-sse/src/main/java/org/dromara/common/sse/core/SseEmitterManager.java @@ -1,6 +1,5 @@ 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; @@ -72,11 +71,6 @@ 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") .data(message)); diff --git a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java index bd47c18..061d3aa 100644 --- a/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java +++ b/ruoyi-common/ruoyi-common-web/src/main/java/org/dromara/common/web/handler/GlobalExceptionHandler.java @@ -16,9 +16,12 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.MissingPathVariableException; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import org.springframework.web.servlet.NoHandlerFoundException; + +import java.io.IOException; /** * 鍏ㄥ眬寮傚父澶勭悊鍣� @@ -92,6 +95,20 @@ /** * 鎷︽埅鏈煡鐨勮繍琛屾椂寮傚父 */ + @ResponseStatus(org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR) + @ExceptionHandler(IOException.class) + public void handleRuntimeException(IOException e, HttpServletRequest request) { + String requestURI = request.getRequestURI(); + if (requestURI.contains("sse")) { + // sse 缁忓父鎬ц繛鎺ヤ腑鏂� 渚嬪鍏抽棴娴忚鍣� 鐩存帴灞忚斀 + return; + } + log.error("璇锋眰鍦板潃'{}',杩炴帴涓柇", requestURI, e); + } + + /** + * 鎷︽埅鏈煡鐨勮繍琛屾椂寮傚父 + */ @ExceptionHandler(RuntimeException.class) public R<Void> handleRuntimeException(RuntimeException e, HttpServletRequest request) { String requestURI = request.getRequestURI(); -- Gitblit v1.9.3