[Web] Enviando eventos do back para o front
Bem, todo mundo aqui sabe como funciona o típico Cliente-Servidor, onde o cliente manda uma requisição e o servidor responde, de uma maneira simples e unidirecional, em que o cliente sempre precisará informar o que necessita. Porém, tem casos que precisamos fazer o caminho inverso, onde o servidor notifica o cliente. Por exemplo: Notificar algum processo mais demorado, mostrando o quanto já foi realizado ou avisar sobre novos conteúdos.
Depois desses exemplos, você já pode estar pensando “Ah, websockets”, mas não. E porque não? Então, websockets é uma comunicação bidirecional entre o cliente e o servidor, ou seja, quando uma conexão http (GET 1.1 upgrade) é realizada pelo cliente, irá mandar a solicitação ao servidor para a troca de protocolo (ws ou wss), criando uma conexão direta entre eles dois. Isso seria um caso perfeito para um chat, por exemplo.
Então, como eu faço para ter essa conexão unidirecional do servidor para o cliente? Aí que entra Server-Sent Events (SSE). Com SSE, o cliente se conecta e manda uma requisição http (GET text/event-stream), onde o servidor vai abrir uma conexão direta, note que o content-type é event-stream ou seja você sempre vai trabalhar com chunks de informação.