React Academy · Pelajaran

Perbandingan SSE vs WebSockets vs Polling

Bandingkan SSE (push satu arah), WebSockets (dua arah), dan polling berdasarkan kesesuaian kebutuhan serta kompleksitas.

Pelajaran 1 dari 413 langkah

Perbandingan SSE vs WebSockets vs Polling adalah pelajaran React Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar React Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus React Academy mencakup 4 pelajaran total.

WebSockets: Koneksi Persisten Dua Arah

WebSockets membuat koneksi TCP persisten antara klien dan server. Kedua pihak dapat mengirim pesan kapan saja, sehingga WebSockets ideal untuk komunikasi waktu nyata yang benar-benar interaktif: aplikasi obrolan, penyuntingan dokumen kolaboratif, permainan multipemain, dan kursor langsung. Koneksi tetap terbuka hingga ditutup secara eksplisit oleh salah satu pihak.

Server-Sent Events: Dorongan Satu Arah

SSE (Server-Sent Events) menggunakan koneksi HTTP biasa, dengan server mengalirkan data ke klien sebagai serangkaian peristiwa. Koneksi ini bersifat satu arah: hanya server yang mengirim data. Klien tidak dapat mengirim pesan kembali melalui koneksi SSE — klien harus membuat permintaan HTTP terpisah untuk itu. SSE diimplementasikan melalui API peramban EventSource.

Permintaan Berkala: Paling Sederhana, Paling Boros

Permintaan berkala berarti klien mengirim permintaan HTTP pada interval tetap, misalnya setiap 5 detik: "Apakah ada pembaruan?" Server segera merespons dengan data terkini. Ini adalah implementasi paling sederhana, tetapi juga yang paling boros — klien membuat banyak permintaan saat tidak ada hal baru. Cara ini hanya cocok untuk data yang berubah sangat lambat.

Permintaan Berkala Panjang: Server Menahan Respons

Permintaan berkala panjang merupakan peningkatan dari permintaan berkala biasa: klien membuat permintaan dan server mempertahankan koneksi tetap terbuka hingga data baru tersedia. Saat data baru tiba, server memberikan respons dan klien segera membuat permintaan lain. Cara ini mengurangi respons yang tidak diperlukan, tetapi tetap memiliki beban tambahan yang lebih tinggi daripada SSE karena setiap respons memerlukan penyiapan koneksi TCP baru.

Keunggulan SSE

SSE memiliki beberapa keunggulan praktis dibandingkan WebSockets untuk pengiriman data dari server ke klien: SSE bekerja melalui HTTP biasa tanpa peningkatan protokol, sehingga dapat melewati proksi perusahaan dan penyeimbang beban tanpa konfigurasi khusus. EventSource memiliki penyambungan ulang otomatis. Protokol berbasis teksnya mudah di-debug di tab jaringan peramban.

Keterbatasan SSE

SSE memiliki keterbatasan nyata: SSE hanya mendukung teks, sehingga data biner harus dikodekan dalam base64; SSE hanya satu arah, sehingga klien tidak dapat mengirim data kembali; dan HTTP/1.1 membatasi jumlah koneksi EventSource bersamaan per domain menjadi 6. HTTP/2 memultiplekskan beberapa aliran melalui satu koneksi sehingga menghilangkan batas ini. Untuk komunikasi dua arah, SSE memerlukan panggilan REST pelengkap.

Skenario Penggunaan SSE

SSE ideal untuk: dasbor langsung yang menampilkan metrik waktu nyata, aliran notifikasi yang mengirimkan peringatan baru, bilah kemajuan untuk proses server yang berjalan lama, aliran media sosial langsung, penampil harga saham, dan antarmuka obrolan yang pesannya hanya mengalir dari server ke klien; Anda mengirim pesan secara terpisah dengan POST. Semua ini merupakan skenario ketika server memulai pembaruan.

Skenario Penggunaan WebSocket

WebSockets diperlukan ketika Anda membutuhkan komunikasi dua arah dengan latensi rendah: obrolan waktu nyata yang pesannya mengalir ke kedua arah melalui satu koneksi, penyuntingan kolaboratif seperti Google Docs, permainan multipemain ketika tindakan klien dan pembaruan server berlangsung cepat, lelang langsung, dan platform perdagangan. Kemampuan dua arah tersebut sepadan dengan kerumitannya.

HTTP/2 dan SSE

HTTP/2 secara signifikan meningkatkan kelayakan SSE. Pemultipleksan koneksi berarti semua aliran SSE dari suatu domain berbagi satu koneksi TCP, sehingga menghilangkan batas koneksi per domain. Jika server Anda mendukung HTTP/2, SSE menjadi semakin praktis untuk dasbor dengan beberapa aliran data yang berjalan bersamaan.

Memilih Teknologi yang Tepat

Kerangka pengambilan keputusan: jika Anda memerlukan komunikasi dua arah dengan latensi rendah → WebSockets. Jika server mengirimkan pembaruan dan klien hanya membaca → SSE. Jika Anda memerlukan pembaruan sesekali dan kesederhanaan penting → permintaan berkala. Jika API server sudah tersedia dan Anda tidak dapat menambahkan SSE → permintaan berkala. Mulailah dengan solusi paling sederhana yang memenuhi persyaratan latensi Anda.

Perbandingan Beban Tambahan Protokol

Pembingkaian WebSocket menambahkan 2–14 byte per pesan setelah jabat tangan awal. SSE menambahkan header HTTP sekali per koneksi, kemudian teks yang dipisahkan baris baru. Permintaan berkala mencakup seluruh header permintaan dan respons HTTP pada setiap permintaan. Untuk data berfrekuensi tinggi, WebSockets lebih unggul dalam hal beban tambahan. Untuk pengiriman data dari server yang jarang, SSE lebih sederhana dengan beban tambahan yang dapat diterima.

Perbedaan Arah Komunikasi SSE dan WebSockets

Apa perbedaan arah komunikasi utama antara SSE dan WebSockets?

Ringkasan Pelajaran: Perbandingan Teknologi Waktu Nyata

WebSockets: koneksi TCP persisten dua arah (obrolan, permainan, penyuntingan kolaboratif). SSE: dorongan HTTP satu arah dari server ke klien melalui API EventSource (notifikasi, dasbor, aliran). Permintaan berkala: permintaan dengan interval tetap (paling sederhana, paling boros). Permintaan berkala panjang: server menahan respons hingga data tersedia (lebih sedikit permintaan, latensi lebih tinggi). Keunggulan SSE: berfungsi melalui proksi, penyambungan ulang otomatis. Keterbatasan SSE: hanya teks, satu arah, dan batas koneksi HTTP/1.1.

Gratis untuk memulai

Belajar React dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
88
Pelajaran
324

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Perbandingan SSE vs WebSockets vs Polling” gratis?

Ya — teks lengkap “Perbandingan SSE vs WebSockets vs Polling” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus React Academy, upgrade ke CoddyKit PRO. Kursus React Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Perbandingan SSE vs WebSockets vs Polling”?

Bandingkan SSE (push satu arah), WebSockets (dua arah), dan polling berdasarkan kesesuaian kebutuhan serta kompleksitas. Kamu berlatih React Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai React Academy?

Tidak diperlukan pengalaman sebelumnya. React Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Perbandingan SSE vs WebSockets vs Polling” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran React Academy ini?

Ya. Setiap pelajaran React Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Perbandingan SSE vs WebSockets vs Polling
  2. Menggunakan Stream SSE di React dengan EventSource
  3. Pola Long Polling dan Logika Penyambungan Kembali
  4. Membangun Umpan Notifikasi Waktu Nyata
← Kembali ke React Academy