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