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