Skip to main content

Command Palette

Search for a command to run...

πŸ”₯ SSE untuk Realtime Data & Notification: Solusi Ringan Tanpa Kerumitan WebSocket

Updated
β€’4 min read
πŸ”₯ SSE untuk Realtime Data & Notification: Solusi Ringan Tanpa Kerumitan WebSocket
A

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.

Di era aplikasi modern, pengguna menuntut data selalu up-to-date tanpa perlu refresh:
status pesanan berubah otomatis, dashboard server update realtime, pesan dan notifikasi masuk seketika.

Saat berbicara tentang realtime, yang terlintas biasanya WebSocket.
Padahal ada teknologi yang lebih ringan, lebih mudah, dan lebih hemat resource untuk kebanyakan kasus:

SSE β€” Server-Sent Events


πŸ“Œ Apa itu SSE?

SSE (Server-Sent Events) adalah mekanisme push dari server ke client menggunakan koneksi HTTP standar.

  • Client berlangganan ke endpoint SSE

  • Server mengirim data setiap ada event baru

  • Browser otomatis reconnect saat koneksi terputus

Tidak perlu protokol baru atau setup rumit seperti pada WebSocket.


πŸ” Aliran Komunikasi SSE

Client β†’ buka koneksi SSE β†’ Server
Server β†’ kirim event realtime β†’ Client
Server β†’ kirim lagi saat ada update β†’ Client

➑ Satu arah: Server β†’ Client
➑ Simpel, efisien, built-in di browser


🎯 Kapan SSE adalah pilihan terbaik?

KebutuhanSSEWebSocket
Update realtime dari server ke browserβœ”οΈβœ”οΈ
Notifikasi userβœ”οΈβœ”οΈ
Streaming logs / metricsβœ”οΈβœ”οΈ
Chat dua arahβœ˜βœ”οΈ
Game multi-player low-latencyβœ˜βœ”οΈ
Butuh dukungan HTTP/2βœ”οΈβš οΈ kompleks
Server lebih hemat resourceβœ”οΈβœ˜

Jika hanya perlu informasi mengalir dari server ke client,
SSE adalah solusi ideal.


🧩 Contoh Penggunaan SSE

  • πŸ”” Notifikasi user (transaksi selesai, chat baru, reply)

  • πŸ“ˆ Dashboard realtime (monitoring CPU, RAM, traffic)

  • 🚚 Status order (pesanan diproses β†’ dikirim β†’ diterima)

  • πŸ§ͺ Progress task (upload render, video encoding)

  • πŸ“œ Streaming log (deployment / CI/CD)

Aplikasi terasa hidup, tanpa polling berat tiap 2–3 detik.


βš™οΈ Cara Kerja di Browser

Browser sudah punya API bawaan:

const events = new EventSource("/api/events");

events.onmessage = (event) => {
  console.log("Message: ", event.data);
};

events.onerror = () => {
  console.log("SSE connection lost, retrying...");
};
  • Tanpa library tambahan

  • Auto reconnect bawaan

  • Dukungan luas (kecuali IE bawaan πŸ₯²)


πŸ–₯️ Contoh Endpoint SSE (Node.js/Hono)

import { Hono } from 'hono';

const app = new Hono();

app.get('/events', (c) => {
  c.header('Content-Type', 'text/event-stream');
  c.header('Cache-Control', 'no-cache');
  c.header('Connection', 'keep-alive');

  const send = (data: any) => {
    c.res.write(`data: ${JSON.stringify(data)}\n\n`);
  };

  // Simulasi kirim event tiap 5 detik
  const interval = setInterval(() => {
    send({ time: new Date().toISOString() });
  }, 5000);

  return new Response('', {
    headers: c.res.headers,
  });
});

export default app;

Trik paling penting: format event harus valid SSE:

data: {...}\n\n

πŸ” SSE + Auth + Multi-User Scalability

SSE sangat cocok untuk SaaS:

  • Kirim event hanya untuk user tertentu

  • Integrasi dengan JWT / HttpOnly Cookie

  • Bisa dipadukan dengan Redis Pub/Sub untuk broadcast antar instance

Arsitektur umum:

Database (PostgreSQL) 
       β”‚
   Backend API
   β”‚       β”‚
 REST     SSE
   β”‚       β”‚
React Query + SSE EventSource

πŸš€ Keunggulan Utama SSE

FiturSSEWebSocketPolling
Push dari serverβœ”οΈβœ”οΈβœ˜
Auto reconnect bawaanβœ”οΈβœ˜βœ˜
Hemat koneksi dan resourceβœ”οΈβœ˜βœ˜
Bisa lewat reverse proxy (Nginx/CDN)βœ”οΈβš οΈ
Kompatibel HTTP/2βœ”οΈβš οΈ
Implementasi sederhanaβœ”οΈβœ˜

⚠️ Keterbatasan SSE

  • Satu arah (tidak kirim dari client ke server)

  • Tidak optimal untuk ribuan event per detik seperti game/action

  • Browser perlu fallback untuk environment spesifik (legacy)

Untuk 90% aplikasi dashboard dan notifikasi β†’ sudah lebih dari cukup.


🧠 Kesimpulan

SSE adalah solusi realtime modern yang:

βœ… ringan
βœ… mudah diimplementasikan
βœ… biaya server kecil
βœ… cocok untuk notifikasi dan update data dinamis

Tidak semua realtime membutuhkan WebSocket.
Pilih yang lebih sederhana tapi efektif: SSE.

More from this blog

F

Finlup ID | Sharing dunia teknologi dan coding

216 posts

Membedah Tren dan Teknologi yang Mengubah Dunia.