WebSockets Yerine Server-Sent Events Kullanmak
(germano.dev)-
Gerçek zamanlı web uygulamaları geliştirirken akla genelde WebSocket gelir, ancak SSE de daha basit bir alternatif olabilir
-
WebSocket'in sorunları: HTTP tabanlı olmadığı için HTTP'nin sağladığı avantajlardan yararlanamaz
→ sıkıştırma yok, HTTP/2 multiplexing desteği yetersiz, proxy'ler tarafından desteklenmez, hijacking mümkün olabilir
- Server-Sent Events (SSE)
→ sunucunun istemciye düşük gecikmeli push event'leri göndermesini sağlayan bir özellik
→ bir HTML standardıdır ve tüm tarayıcılar tarafından desteklenir (IE hariç)
→ WebSocket'ten farklı olarak SSE, sunucudan istemciye tek yönlü akar (çift yönlü iletişim gerektiren oyunlar için uygun değildir)
→ HTTP üzerinde çalışır ve ek bir protokol gerektirmez
5 yorum
Load Balancer veya Proxy ortamlarında SSE desteği çoğu zaman yetersizdir. (+Kurumsal Firewall)
Cloudflare ya da AWS CLB gibi ortamları göz önünde bulunduruyorsanız, SSE’yi devreye almadan önce bunu bir kez daha kontrol etmeniz gerekir.
GraphQL Subscription için bir transport olarak, WebSocket yerine kullanıldığı durumlar da vardır.
GraphQL SSE handler uygulaması: https://github.com/enisdenjo/graphql-sse
SSE'nin Subscription transport olarak kullanıldığı örnek: https://www.graphql-yoga.com/docs/features/subscriptions
Deno Deploy veya Lambda gibi özel ortamlarda WebSockets uygulamak zor olduğunda bir alternatif olabilir. :-)
Ben de yakın zamanda Deno Deploy’da bir sohbet örneğine bakarken SSE’yi ilk kez öğrendim.
https://github.com/lucacasonato/deploy_chat
Böyle bir şey de varmış. Öğrenmiş oldum.
Bu yazının yorumlarına ve HN’deki yorumlara da birlikte göz atın.
SSE kullananlar, WebSocket’ten geçiş yapan örnekler, SSE’ye geçip sonra tekrar WebSocket’e dönen örnekler gibi oldukça çeşitli görüşler var.
https://news.ycombinator.com/item?id=30312897
Aslında yazıda SSE’nin avantajlarından epey söz ediliyor, ancak daha çok yalnızca özel senaryolarda faydalı oluyor.
Bu aralar WebSocket tarafında da çok sayıda kütüphane çıktığı için uygulaması daha kolay hale geldi.
Böyle bir görüş de var.