Usar Server-Sent Events en lugar de WebSockets
(germano.dev)-
Al crear aplicaciones web en tiempo real, normalmente se piensa en WebSockets, pero SSE también puede ser una alternativa simple
-
Problemas de los WebSockets: como no están basados en HTTP, no aprovechan los beneficios de HTTP
→ no se pueden comprimir, el soporte para multiplexación de HTTP/2 es limitado, los proxies no los soportan, es posible el secuestro de conexión
- Server-Sent Events (SSE)
→ una funcionalidad que permite al servidor enviar eventos push de baja latencia al cliente
→ es un estándar de HTML y todos los navegadores lo soportan (excepto IE)
→ a diferencia de WebSockets, SSE tiene un flujo unidireccional del servidor al cliente (no es adecuado para juegos que requieren comunicación bidireccional)
→ funciona sobre HTTP y no requiere un protocolo adicional
5 comentarios
En entornos con Load Balancer o Proxy, suele haber poco soporte para SSE. (+ firewall empresarial)
Si están considerando entornos como Cloudflare o AWS CLB, deberían verificarlo una vez más antes de adoptar SSE.
También hay casos en los que se usa como transporte para GraphQL Subscription en lugar de WebSocket.
Implementación de un handler de GraphQL SSE: https://github.com/enisdenjo/graphql-sse
Ejemplo de uso de SSE como transporte de Subscription: https://www.graphql-yoga.com/docs/features/subscriptions
Puede ser una alternativa cuando es difícil implementar WebSockets en entornos especiales como Deno Deploy o Lambda. :-)
Yo también conocí SSE por primera vez hace poco mientras veía un ejemplo de chat en Deno Deploy.
https://github.com/lucacasonato/deploy_chat
No sabía que existía esto. Aprendo algo nuevo.
Revisen también los comentarios de este artículo y los comentarios en HN.
Hay muchas opiniones distintas, incluyendo gente que usa SSE, casos de migración desde WebSockets y casos en los que probaron SSE y luego volvieron a WebSockets.
https://news.ycombinator.com/item?id=30312897
En realidad, el artículo habla bastante de las ventajas de SSE, pero solo resulta útil en escenarios especiales.
Últimamente también han salido muchas librerías del lado de WebSockets, así que implementarlo se ha vuelto más sencillo.
También existe ese argumento.