Я использую реактивный 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;
}
};
Это работает в некоторой степени, но со следующими выпусками
- Потребление ответов не синхронизируется с потоками публикации, и в большинстве случаев несколько потоков объединяются и передаются клиенту.
xhr.responseText
по существу добавляет все потоки и продолжает увеличиваться, что выглядит как анти-шаблон , поскольку вся идея состояла в том, чтобы разбить огромные ответы на более мелкие куски и использовать их по отдельности.
Есть ли какая-нибудь хорошая альтернатива для обработки потокового отклика в реактивно-нативном? Предложения приветствуются.