package org.ruoyi.common.chat.sse; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import okhttp3.Response; import okhttp3.ResponseBody; import okhttp3.sse.EventSource; import okhttp3.sse.EventSourceListener; import java.util.Objects; /** * sse * * @author https:www.unfbx.com * 2023-02-28 */ @Slf4j public class ConsoleEventSourceListener extends EventSourceListener { @Override public void onOpen(EventSource eventSource, Response response) { log.info("OpenAI建立sse连接..."); } @Override public void onEvent(EventSource eventSource, String id, String type, String data) { log.info("OpenAI返回数据:{}", data); if ("[DONE]".equals(data)) { log.info("OpenAI返回数据结束了"); } } @Override public void onClosed(EventSource eventSource) { log.info("OpenAI关闭sse连接..."); } @SneakyThrows @Override public void onFailure(EventSource eventSource, Throwable t, Response response) { if(Objects.isNull(response)){ log.error("OpenAI sse连接异常:{}", t); eventSource.cancel(); return; } ResponseBody body = response.body(); if (Objects.nonNull(body)) { log.error("OpenAI sse连接异常data:{},异常:{}", body.string(), t); } else { log.error("OpenAI sse连接异常data:{},异常:{}", response, t); } eventSource.cancel(); } }