Executando verificação de segurança...
9

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?

  1. Use SSE quando você precisa de atualizações em tempo real e:
  2. Só o servidor envia dados (o cliente apenas escuta).
  3. Você quer algo mais simples e leve do que WebSockets.
  4. Deseja manter compatibilidade com HTTP padrão e infraestrutura tradicional.

⚙️ Como funciona o SSE?

  1. O navegador faz uma requisição HTTP do tipo GET para uma rota do seu back-end.
  2. O servidor mantém essa conexão aberta e começa a enviar eventos no formato de texto, seguindo uma sintaxe específica.
  3. Sempre que novos dados estiverem prontos, o servidor envia um novo evento.
  4. 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.

Carregando publicação patrocinada...
2

Por falar nisso implementei SSE no sistema da empresa.
Onde precisa deixar relatórios mais simples executando em uma fila. Ai eu notificava ao front através da conexão SSE.

Parabéns, ótimo conteúdo.


Não que alguém queira saber, mas... o fluxo foi:
Primeira req, para pegar o id do processamento na fila.
E a segunda requisição era SSE, para ficar ouvindo o backend.
Ai quando tinha atualização ele ta um sucesso e baixava o arquivo da AzureStorage. Funcionou muito bem!

1