From b1ff44df4bc71f8f8be7dc913089c910d85d44d0 Mon Sep 17 00:00:00 2001
From: ageerle <ageerle@163.com>
Date: 星期二, 29 四月 2025 11:44:47 +0800
Subject: [PATCH] feat: sse对话样式优化

---
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java |    3 ++-
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/util/SSEUtil.java                     |    5 +----
 ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java  |    5 +++--
 3 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java
index 51d67cf..f8fd1cf 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/listener/SSEEventSourceListener.java
@@ -12,6 +12,7 @@
 import okhttp3.sse.EventSourceListener;
 import org.jetbrains.annotations.NotNull;
 import org.ruoyi.chat.service.chat.IChatCostService;
+import org.ruoyi.chat.util.SSEUtil;
 import org.ruoyi.common.chat.entity.chat.ChatCompletionResponse;
 import org.ruoyi.common.chat.request.ChatRequest;
 import org.ruoyi.common.core.utils.SpringUtils;
@@ -84,10 +85,10 @@
                     modelName = completionResponse.getModel();
                 }
                 stringBuffer.append(content);
-                emitter.send(content);
+                emitter.send(data);
             }
         } catch (Exception e) {
-            emitter.completeWithError(e);
+            log.error(e.getMessage(), e);
         }
     }
 
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
index f2965cb..eb0ae4e 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/service/chat/impl/SseServiceImpl.java
@@ -11,6 +11,7 @@
 import org.ruoyi.chat.service.chat.IChatCostService;
 import org.ruoyi.chat.service.chat.ISseService;
 import org.ruoyi.chat.util.IpUtil;
+import org.ruoyi.chat.util.SSEUtil;
 import org.ruoyi.common.chat.config.LocalCache;
 import org.ruoyi.common.chat.entity.Tts.TextToSpeech;
 import org.ruoyi.common.chat.entity.chat.ChatCompletion;
@@ -88,7 +89,7 @@
             switchModelAndHandle(chatRequest,sseEmitter);
         } catch (Exception e) {
             log.error(e.getMessage(),e);
-            sseEmitter.completeWithError(e);
+            SSEUtil.sendErrorEvent(sseEmitter,e.getMessage());
         }
         return sseEmitter;
     }
diff --git a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/util/SSEUtil.java b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/util/SSEUtil.java
index b429a6c..0d970cd 100644
--- a/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/util/SSEUtil.java
+++ b/ruoyi-modules/ruoyi-chat/src/main/java/org/ruoyi/chat/util/SSEUtil.java
@@ -21,11 +21,8 @@
      * @param errorMessage 閿欒淇℃伅
      */
     public static void sendErrorEvent(ResponseBodyEmitter sseEmitter, String errorMessage) {
-        SseEmitter.SseEventBuilder event = SseEmitter.event()
-                .name("error")
-                .data(errorMessage);
         try {
-            sseEmitter.send(event);
+            sseEmitter.send(errorMessage);
         } catch (IOException e) {
             log.error("SSE鍙戦�佸け璐�: {}", e.getMessage());
         }

--
Gitblit v1.9.3