DEV Community

Benita Clarissa
Benita Clarissa

Posted on

Perbedaan SSE dan WebSockets

SSE dan WebSockets termasuk ke dalam teknologi data push. Lantas, apa yang membedakan keduanya? dan teknologi mana yang lebih baik untuk digunakan?

Perbedaan SSE dan WebSockets

  • Server-Sent Events (SSE) adalah teknologi HTML5 yang akan membuat server melakukan push data ke client secara satu arah (one-way messaging).

  • WebSockets adalah teknologi HTML5 yang akan membuat server melakukan push data dua arah antara client dan server (two-way communication).

Kapan perlu menggunakan data push? WebSockets atau SSE?

Berikut pertimbangan saat memilih teknologi data push yang akan diimplementasikan dalam aplikasi.

  • Seberapa sering server mengirimkan event (data) ke client?

    • Jika server sering mengirimkan data ke client, aplikasi tersebut cocok menggunakan teknologi data push dibandingkan data pull.
  • Apakah latency dan baterai menjadi pertimbangan utama bagi user?

    • Latency dan baterai dapat menjadi pertimbangan utama bagi mobile user. Konektivitas jaringan sangat penting bagi tipe user ini. Oleh karena itu, data push lebih baik dibandingkan data pull.
  • Seberapa sering client mengiriman event (data) ke server?

    • Jika event terjadi dalam frekuensi rapat (di bawah 5 detik, atau bahkan 1 detik sekali), aplikasi tersebut lebih baik menggunakan WebSockets dibandingkan SSE.
    • Jika event terjadi dalam frekuensi lebih jarang (5-10 detik sekali), Anda dapat menggunakan SSE dan bahkan data push technology tidak perlu terlalu diprioritaskan.
  • Apakah waktu pengiriman event dari server bisa diprediksi?

    • Ketika event dikirim lebih dari 1 menit sekali, data pull lebih baik karena tidak perlu membuka socket untuk SSE/WebSockets.
  • Apakah server mengirimkan (push) binary data ke client?

    • Jika ada banyak binary data yang dikirimkan server, sebaiknya menggunakan WebSockets dibandingkan SSE (bahkan lebih baik menggunakan XHR polling dibandingkan SSE).
    • Jika data binary hanya sedikit, lakukan encoding pada SSE untuk mengurangi jumlah byte yang dikirimkan
  • Apakah client mengirimkan (push) binary data ke server?

    • XMLHttpRequest (seperti: Ajax dan SSE) dan WebSockets bisa digunakan untuk mengirimkan binary data.

Jadi, teknologi mana yang lebih baik?

Masing-masing teknologi memiliki keunggulan yang berbeda, tergantung dari kebutuhan aplikasi yang dikembangkan.

  • Aplikasi yang membutuhkan komunikasi 2 arah antara client dan server

    • harus menggunakan WebSockets
    • tidak cocok menggunaakn SSE
    • Contoh: chat platform
  • Aplikasi yang hanya mengirimkan data 1 arah ke client

    • sangat cocok menggunakan SSE
    • tidak cocok menggunakan WebSockets
    • Contoh: FX trading

Selanjutnya

Post selanjutnya akan membahas cara implementasi SSE. Implementasi backend akan menggunakan bahasa pemrograman Golang. Implementasi dari sisi frontend akan menggunakan teknologi ReactJS.

Referensi

Cook, D. (2014). Data Push Apps with HTML5 SSE: Pragmatic Solutions for Real-World Clients (1st ed.) [E-book]. O’Reilly Media.

Oldest comments (0)