Я разрабатываю приложение Spring WebFlux, которое интегрируется со сторонним API. Этот API возвращает данные в формате text/event-stream, специально для потоковой передачи сообщений чата. Я настроил в своем приложении конечную точку для пересылки запросов к этому API с помощью WebClient и обработки ответов SSE.
Проблема:
Несмотря на получение данных из стороннего API при тестировании с помощью таких инструментов, как Postman и cURL, моя конечная точка Spring WebFlux (
Код: Выделить всё
/v1/api/bot-manager/chat-messagesФрагменты кода:
Ниже приведены соответствующие части. моего приложения Spring WebFlux:
- Уровень обслуживания ():[/b]
Код: Выделить всё
BotManagerServiceКод: Выделить всё
@Override public Flux chatMessages(ChatMessageRequest model) { BotInfo botInfo = botInfoRepository.findById(model.getBotId()).orElse(null); if (botInfo != null) { HttpHeaders headers = new HttpHeaders(); headers.setBearerAuth(botInfo.getBotKey()); headers.setContentType(MediaType.APPLICATION_JSON); return webClient.post() .uri("/chat-messages") .headers(httpHeaders -> httpHeaders.addAll(headers)) .body(BodyInserters.fromValue(model)) .accept(MediaType.TEXT_EVENT_STREAM, MediaType.APPLICATION_OCTET_STREAM, MediaType.APPLICATION_JSON) .acceptCharset(StandardCharsets.UTF_8) .retrieve() .bodyToFlux(String.class) .doOnNext(chatResponse -> { System.out.println(gson.toJson(chatResponse)); }) .log(); } throw new RuntimeException("Bot info not found"); } - Уровень контроллера ():[/b]
Код: Выделить всё
BotManagerControllerКод: Выделить всё
@PostMapping(value = "/chat-messages", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public Flux chatMessages(@RequestBody ChatMessageRequest model) { return botManagerService.chatMessages(model); }
- Третий -party API непрерывно возвращает данные в формате text/event-stream.
- Я подтвердил, что настройка и заголовки webClient верны, поскольку я могу регистрировать ответы на моем уровне обслуживания.
- Несмотря на успешные журналы на уровне обслуживания, конечная точка контроллера не передает никаких данных обратно клиенту.
Что может быть причиной того, что моя конечная точка Spring WebFlux /v1/api/bot-manager/chat-messages не передает полученный сервер -Отправлены данные о событиях (SSE) клиенту? Есть ли проблема с конфигурацией или ошибка в моем подходе?

Подробнее здесь: https://stackoverflow.com/questions/787 ... s-sse-data
Мобильная версия