最近公司准备做个类似 GPT 一样的聊天功能,使用 SSE 来实现。 写了个 demo ,但是输出的内容都是等待后一次性输出到前端,并不是打字机的效果。 服务端代码如下: @GetMapping(value = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter c() { SseEmitter sseEmitter = new SseEmitter();
log.error("xxx start"); //调用流式会话服务 new Thread(() -> streamChatCompletion(sseEmitter)).start(); log.error("xxx end"); //及时返回 SseEmitter 对象 return sseEmitter; }
public void streamChatCompletion(SseEmitter emitter) { try { for (int i = 0; i < 3; i++) { String o = "test" + i; emitter.send(o); Thread.sleep(1000); // 每秒发送一次 } emitter.send(SseEmitter.event().name(" stop").data("")); emitter.complete(); // 完成发送 } catch (IOException | InterruptedException e) { emitter.completeWithError(e); // 发送错误 } } |
|