Server-Sent Events (SSE) Você conhece?
Logicamente você já precisou notificar a sua interface que algum processo no seu back-end foi finalizado. Quando eu não tinha um servidor de socket disponível, muitas vezes recorria ao setTimeout no JavaScript para atualizar informações vindas do back-end.
Embora funcione em casos simples, essa abordagem não é a ideal. O setTimeout roda na thread principal da aplicação — a mesma responsável pela interface do usuário (UI). Isso significa que, ao utilizá-lo repetidamente para buscar dados, você pode sobrecarregar o navegador, causar travamentos e comprometer o desempenho geral da aplicação. Recentemente descobri que existe o Server-Sent Events (SSE), realmente não sei como não fiquei sabendo disso antes. Já que o SSE foi introduzido com a proposta do HTML5 em 2009. Vivendo e aprendendo sempre!
Mas o que é esse SSE (Server-Sent Events)?
É uma tecnologia do HTML5 que permite que o servidor envie atualizações automaticamente para o navegador do cliente através de uma conexão HTTP persistente. Diferente do WebSocket, o fluxo de dados é unidirecional: do servidor para o cliente.
📌 Quando usar SSE?
- Use SSE quando você precisa de atualizações em tempo real e:
- Só o servidor envia dados (o cliente apenas escuta).
- Você quer algo mais simples e leve do que WebSockets.
- Deseja manter compatibilidade com HTTP padrão e infraestrutura tradicional.
⚙️ Como funciona o SSE?
- O navegador faz uma requisição HTTP do tipo GET para uma rota do seu back-end.
- O servidor mantém essa conexão aberta e começa a enviar eventos no formato de texto, seguindo uma sintaxe específica.
- Sempre que novos dados estiverem prontos, o servidor envia um novo evento.
- O navegador recebe esses eventos de forma contínua e pode atualizá-los na interface.
🔄 Reconexão automática
Uma das vantagens do SSE sobre sockets personalizados ou polling com setInterval é que o navegador lida automaticamente com reconexões se a conexão for perdida. Por padrão, ele tenta reconectar após 3 segundos.
Para mim, foi de suma importância conhecer o Server-Sent Events (SSE). Agora, sempre que eu precisar de uma forma simples de notificar o front-end em tempo real, sei que posso utilizá-lo.
No entanto, como tudo na vida, o uso precisa ser feito com sabedoria. Isso porque, para cada usuário conectado, uma nova conexão contínua é aberta com o back-end. Em sistemas com muitos usuários simultâneos, isso pode se tornar um desafio, já que o servidor precisará gerenciar e manter todas essas conexões ativas, o que pode impactar o desempenho e escalabilidade da aplicação.