SSE vs Websocket, Mana Yang Harus Digunakan?

SSE (Server Sent Event) dan WebSocket adalah dua hal yang fungsinya mirip tapi cara kerjanya berbeda.
Keduanya dapat digunakan untuk membuat sistem informasi real time, yaitu client dapat menerima data tanpa perlu terus menerus meminta ke server. Server bisa langsung mengirimkan data ke client.
Contoh penggunaan realnya adalah untuk notifikasi, chat user, live comment, dsb.
Lalu apa bedanya? Jawaban singkat dan sederhananya adalah:
- SSE: Client hanya dapat sekali meminta data, selanjutnya hanya server yang dapat mengirimkan data secara terus-menerus.
- WebSocket: Client dan server dapat mengirimkan data kapanpun secara terus menerus.
Berikut penjelasan lebih detail:
SSE (Server Sent Event)

SSE adalah cara untuk mengirimkan data dari server secara terus-menerus tanpa perlu menunggu permintaan dari client. Client hanya sekali meminta data pada awal koneksi ke server.
SSE menggunakan protokol http. Jadi, SSE hanyalah HTTP request biasa yang tidak langsung ditutup setelah response pertama, kemudian server bisa mengirimkan beberapa response lagi dari koneksi tersebut secara berkala.
Alur kerja SSE:
- Client membuka koneksi ke server.
- Server mengembalikan data ke client.
- Koneksi tetap terbuka.
- Server mengirimkan data secara terus-menerus tanpa menunggu client minta.
- Client menerima setiap data.
- Server menutup koneksi.
Contoh penggunaan SSE:
- Import dan export progress.
- Chat AI, untuk streaming response jawaban dari AI.
Kekurangan SSE:
- Koneksi satu arah hanya dari server, client tidak bisa mengirim data setelah koneksi.
WebSocket

WebSocket adalah cara untuk komunikasi dua arah antara client dan server secara langsung tanpa menunggu permintaan dari salah satunya.
WebSocket menggunakan protokol sendiri yaitu ws atau wss. Meskipun di awal koneksi menggunakan HTTP.
Alur kerja WebSocket:
- Client menghubungkan ke websocket server.
- Client dan server saling mengirim data kapan saja selama terhubung.
- Server atau client menutup koneksi.
Contoh penggunaan WebSocket:
- Live chat.
- Live comment.
- Notifikasi user.
Mana Yang Lebih Mudah Digunakan?
Keduanya sebenarnya sama-sama mudah diimplementasikan di sisi servernya atau clientnya.
Namun SSE lebih mudah pada beberapa sisi:
- SSE lebih sederhana karena itu sebenarnya HTTP request biasa.
- Browser secara otomatis bisa melakukan koneksi ulang ketika koneksi terputus.
Kapan Menggunakan SSE
- Notifikasi dan progress pada export dan import data.
- AI Chat.
- Status pada job/queue yang berjalan di background.
Kapan Menggunakan WebSocket
- Live chat.
- Live comment.
- Editor interaktif antar pengguna.
- Notifikasi User.