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

206 posts

Membedah Tren dan Teknologi yang Mengubah Dunia.