23 pontos por xguru 2022-02-14 | 5 comentários | Compartilhar no WhatsApp
  • Ao criar aplicações web em tempo real, normalmente se pensa em WebSockets, mas SSE também pode ser uma alternativa simples

  • Problemas dos WebSockets: como não são baseados em HTTP, não se beneficiam das vantagens do HTTP

→ sem compressão, suporte insuficiente a multiplexação HTTP/2, proxies não dão suporte, possibilidade de hijacking

  • Server-Sent Events (SSE)

→ recurso que permite ao servidor enviar eventos push de baixa latência para o cliente

→ é um padrão HTML e é compatível com todos os navegadores (exceto IE)

→ diferentemente dos WebSockets, o SSE funciona em fluxo unidirecional do servidor para o cliente (não é adequado para jogos que exigem comunicação bidirecional)

→ funciona sobre HTTP e não exige protocolo separado

5 comentários

 
minhoryang 2022-02-18

Em ambientes com Load Balancer ou Proxy, muitas vezes o suporte a SSE é insuficiente. (+ firewall corporativo)

Se você estiver considerando ambientes como Cloudflare ou AWS CLB etc., vale a pena verificar mais uma vez antes de adotar SSE.

 
cometkim 2022-02-16

Também há casos em que ele é usado no lugar de WebSocket como transporte para GraphQL Subscription.

 
wan2land 2022-02-14

Pode ser uma alternativa quando é difícil implementar WebSockets em ambientes específicos, como Deno Deploy ou Lambda. :-)

Eu também conheci SSE pela primeira vez recentemente, enquanto via um exemplo de chat no Deno Deploy.

https://github.com/lucacasonato/deploy_chat

 
nicewook 2022-02-14

Interessante. Aprendi algo novo.

 
xguru 2022-02-14

Veja também os comentários deste texto e os comentários no HN.

Há muitas opiniões diferentes, incluindo pessoas que usam SSE, casos de migração de WebSocket para SSE e casos em que migraram para SSE e depois voltaram para WebSocket.

https://news.ycombinator.com/item?id=30312897

Na verdade, embora o texto fale bastante sobre as vantagens do SSE, ele acaba sendo útil apenas em cenários específicos.

Hoje em dia também surgiram muitas bibliotecas para WebSocket, então a implementação ficou mais simples.

Também existe esse tipo de argumento.