Невозможно использовать потоковый ответ Webflux в клиенте React-Native - PullRequest
0 голосов
/ 30 июня 2018

Я использую реактивный API для потоковой передачи, построенный на WebFlux Spring 5, работающем на Netty-сервере со следующим синтаксисом -

@RequestMapping(path = "/customer/messages/stream", method = RequestMethod.POST, produces = MediaType.APPLICATION_STREAM_JSON_VALUE)
public Flux<Messages> fetchAllMessagesForCustomer(@RequestBody CustomerRequest)

Теперь, чтобы использовать это из моего приложения-родного приложения, я попытался использовать , загрузите Api , но это не сработало из-за реакции-нативной проблемы . Так что я попробовал со старым добрым xhr

xhr.onreadystatechange = function() {
  console.log("state change.. state: "+ xhr.readyState);

  if(xhr.readyState == 3) {
    var newData = xhr.response.substr(xhr.seenBytes);
    console.log("newData", newData);
    xhr.seenBytes = xhr.responseText.length;
  }
};

Это работает в некоторой степени, но со следующими выпусками

  1. Потребление ответов не синхронизируется с потоками публикации, и в большинстве случаев несколько потоков объединяются и передаются клиенту.
  2. xhr.responseText по существу добавляет все потоки и продолжает увеличиваться, что выглядит как анти-шаблон , поскольку вся идея состояла в том, чтобы разбить огромные ответы на более мелкие куски и использовать их по отдельности.

Есть ли какая-нибудь хорошая альтернатива для обработки потокового отклика в реактивно-нативном? Предложения приветствуются.

...