Server-sent-Events x WebSockets x Long-Polling
- Server-sent-Events x WebSockets x Long-Polling
Server-sent-Events x WebSockets x Long-Polling
1️⃣ Long-Polling:
Essa técnica é um "remendo" no tradicional HTTP. O cliente envia uma solicitação ao servidor, que mantém a conexão aberta até que haja novos dados. É uma solução fácil de implementar, mas tem problemas de escalabilidade e eficiência, já que mantém conexões abertas mesmo sem novos dados.
- 🌟 Prós:
- Funciona em todos os navegadores
- Contra:
- Constantes conexão/desconexão não é o ideal por ser lento
2️⃣ Websockets:
Essa tecnologia permite uma comunicação bidirecional entre cliente e servidor. É mais eficiente que o long-polling, mas a implementação é mais complexa e exige maior controle de conexões. Por outro lado, é a solução ideal para comunicação entre client em servidor (ambos precisam enviar mensagens)
- 🌟 Prós:
- Conexão sempre disponível
- Contra:
- Os conjuntos de soquetes podem ser esgotados quando vários usuários e guias estão conectados
3️⃣ Server-Sent Events:
Eis o protagonista da nossa conversa! O SSE permite que o servidor envie atualizações unidirecionais ao cliente. É mais simples de implementar que os Websockets e oferece melhor desempenho e escalabilidade que o long-polling. Como assim? Vamos ver! 🧐
-
🌟 Funcionamento:
- O SSE usa a API EventSource do JavaScript para estabelecer uma conexão HTTP persistente com o servidor. Sempre que o servidor tem novos dados, ele os envia como um evento para o cliente, que os processa e atualiza a interface do usuário.
-
🌟 Vantagens:
- Simplicidade: A implementação é mais fácil que os Websockets, já que é baseada em HTTP.
- Escalabilidade: Como é unidirecional, reduz a sobrecarga de manter conexões bidirecionais.
- Recuperação de conexão: Se a conexão for perdida, o SSE tenta se reconectar automaticamente.
-
🌟 Possibilidade de escala:
- O SSE é ótimo para aplica ções que precisam apenas de comunicação unidirecional, como atualizações de notícias, feeds de redes sociais e dashboards. Isso permite que você alcance um alto nível de escalabilidade sem comprometer a eficiência.