-
Saat membuat aplikasi web real-time, biasanya yang terpikir adalah WebSocket, tetapi SSE juga bisa menjadi alternatif yang sederhana
-
Masalah pada WebSocket: karena tidak berbasis HTTP, WebSocket tidak mendapatkan manfaat dari HTTP
→ tidak bisa dikompresi, dukungan HTTP/2 multiplexing kurang memadai, proxy tidak mendukung, rentan terhadap hijacking
- Server-Sent Events (SSE)
→ fitur yang memungkinkan server mengirim event push berlatensi rendah ke klien
→ merupakan standar HTML dan didukung semua browser (kecuali IE)
→ berbeda dari WebSocket, SSE mengalir satu arah dari server ke klien (tidak cocok untuk game yang memerlukan komunikasi dua arah)
→ berjalan di atas HTTP dan tidak memerlukan protokol terpisah
5 komentar
Di lingkungan Load Balancer atau Proxy, dukungan untuk SSE sering kali kurang memadai. (+Enterprise Firewall)
Jika Anda mempertimbangkan lingkungan seperti Cloudflare atau AWS CLB, sebaiknya periksa sekali lagi sebelum mengadopsi SSE.
Ini juga kadang digunakan sebagai transport untuk GraphQL Subscription sebagai pengganti WebSocket.
Implementasi handler GraphQL SSE: https://github.com/enisdenjo/graphql-sse
Contoh penggunaan SSE sebagai subscription transport: https://www.graphql-yoga.com/docs/features/subscriptions
Ini bisa menjadi alternatif saat sulit mengimplementasikan WebSocket di lingkungan khusus seperti Deno Deploy atau Lambda. :-)
Saya juga baru pertama kali mengetahui SSE baru-baru ini saat melihat contoh chat di Deno Deploy.
https://github.com/lucacasonato/deploy_chat
Ternyata ada yang seperti ini. Saya jadi belajar sesuatu
Lihat juga komentar pada artikel ini dan komentar di HN.
Ada banyak pendapat beragam, mulai dari orang yang menggunakan SSE, kasus yang beralih dari WebSocket, hingga kasus yang sempat memakai SSE lalu kembali lagi ke WebSocket.
https://news.ycombinator.com/item?id=30312897
Sebenarnya artikel tersebut memang banyak membahas kelebihan SSE, tetapi ini memang hanya berguna pada skenario tertentu.
Belakangan ini, di sisi WebSocket juga sudah banyak bermunculan library sehingga implementasinya pun menjadi lebih sederhana.
Ada juga pendapat seperti ini.