Projeto foi criado apenas para estudo do paradigma da progração reativa com banco de dados relacional
Nesse simples projeto utilizo o Kotlin como backend e o padrão WebFux do SprintBoot para retornar os dados em um endpoint convencional do SprintWeb utilizando o conceito de progração reativa. para guardar os registros utilizo o H2 como banco de dados e o driver R2DBC
No frontend eu criei dois tipos de chamadas ao endpoint /heroes
onde irá retornar uma lista de herois de forma assíncrona.
No primeiro exemplo de request eu utilizo o EventSource
que irá dar uma resposta ao frontend logo no primeiro registro encontrado no stream de dados
No segundo exemplo eu utilizo o fetch
para buscar os dados no backend de forma convencional.
O retorno dos dados utilizando o EventSouce
ocorre por volta de 550ms
porque a cada item retornado no stream
do backend um evento é disparado no frontend
por outro lado utilizando o fetch
os dados somente serão retornados quando TODOS os itens estiverem prontos no backend tendo uma demora de mais de 22500ms
para ter um feedback ao usuário;