diff --git a/pom.xml b/pom.xml
index 5edcd75..e418274 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,6 +85,14 @@
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.2
+
+ true
+
+
diff --git a/src/main/java/com/supervision/contoller/ChatController.java b/src/main/java/com/supervision/contoller/ChatController.java
index 42ddb47..7a41377 100644
--- a/src/main/java/com/supervision/contoller/ChatController.java
+++ b/src/main/java/com/supervision/contoller/ChatController.java
@@ -55,14 +55,7 @@ public class ChatController {
}
@GetMapping(value="/stream",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
- public Flux>> test2(@RequestParam("query") String query) {
+ public Flux>> stream(@RequestParam("query") String query) {
return chatService.streamingMessage(query);
}
-
- @GetMapping(value = "/webflux",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
- public Flux chatWebFlux() {
- String string = ResourceUtil.readUtf8Str("classpath:static/test.txt");
- String[] stringArray = StrUtil.split(string, 1);
- return Flux.just(stringArray).delayElements(Duration.ofMillis(50));
- }
}
diff --git a/src/main/java/com/supervision/service/impl/ChatServiceImpl.java b/src/main/java/com/supervision/service/impl/ChatServiceImpl.java
index 8bd1946..a7ec257 100644
--- a/src/main/java/com/supervision/service/impl/ChatServiceImpl.java
+++ b/src/main/java/com/supervision/service/impl/ChatServiceImpl.java
@@ -76,25 +76,27 @@ public class ChatServiceImpl implements IChatService {
Map map = new HashMap<>();
map.put("event", response.getEvent());
if (response.getEvent().equals("message") && response.getAnswer() != null) {
- String voiceBaseId = UUID.randomUUID().toString();
//遍历answer中的每一个字符,判断是否为标点符号,如果是,说明是句子的结尾,将标点符号前的文本拼接到sentence中,并打印,然后清空sentence,如果标点符号后还有文本,将文本拼接到sentence中
for (char ch : response.getAnswer().toCharArray()) {
sentence.append(ch);
if (ch == '。' || ch == '!' || ch == '?' || ch == ',' || ch == '、' || ch == '‘' || ch == '’' || ch == '“' || ch == '”') { // Check for punctuation marks
log.info(sentence.toString());
TtsResultDTO ttsResultDTO = TtsUtil.ttsTransform(sentence.toString());
+ String voiceBaseId = UUID.randomUUID().toString();
voiceCache.put(voiceBaseId, ttsResultDTO.getAudio());
map.put("audioId", voiceBaseId);
sentence.setLength(0); // Clear the sentence
+ return ServerSentEvent.builder(map).build();
}
}
if (response.getEvent().equals("message_end") && !sentence.isEmpty()) {
log.info(sentence.toString());
TtsResultDTO ttsResultDTO = TtsUtil.ttsTransform(sentence.toString());
+ String voiceBaseId = UUID.randomUUID().toString();
voiceCache.put(voiceBaseId, ttsResultDTO.getAudio());
map.put("audioId", voiceBaseId);
+ return ServerSentEvent.builder(map).build();
}
- return ServerSentEvent.builder(map).build();
}
return ServerSentEvent.builder(map).build();
});
diff --git a/src/main/resources/static/test.txt b/src/main/resources/static/test.txt
deleted file mode 100644
index 66b1b21..0000000
--- a/src/main/resources/static/test.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-SpringBoot+WebFlux通过流式响应实现类似ChatGPT的打字机效果
-突然间想用Java实现一下像ChatGPT一样的打字机输出效果,但是网上搜了相关教程感觉都不够满意。
-这里贴一下自己的实现,为中文互联网做一点小小的贡献
\ No newline at end of file