Lewati ke konten utama

Global Events (SSE)

Sistem Frog Cloud menyediakan koneksi Server-Sent Events (SSE) agar aplikasi Frontend pelanggan bisa menerima update informasi secara langsung (real-time) tanpa perlu melakukan polling ke server.

Notifikasi yang dikirimkan melalui SSE mencakup berbagai jenis event seperti status Block Storage (contoh: pembuatan selesai), Virtual Machine, atau Billing.


1. Berlangganan (Subscribe) Event

Membuka koneksi streaming tiada akhir dari server untuk menerima event secara real-time. Koneksi ini sangat cocok dikonsumsi menggunakan API EventSource bawaan browser.

Request
GET /api/events/stream

Penting: Koneksi bersifat streaming (keep-alive) sehingga Frontend perlu menangani rekoneksi jika terputus (biasanya di-handle otomatis oleh EventSource di Javascript). Endpoint ini tidak dapat di-test secara langsung menggunakan Swagger UI.

Contoh Implementasi di Frontend (Javascript)

// Membuka koneksi SSE
const evtSource = new EventSource("/api/events/stream");

// Mendengarkan semua pesan yang dikirimkan server
evtSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log("Menerima Event Baru:", data);

// Contoh pengecekan event block storage
if (data.domain === "block_storage" && data.action === "created") {
alert("Pembuatan block storage berhasil!");
}
};

evtSource.onerror = function(err) {
console.error("Koneksi SSE terputus:", err);
};

2. Struktur Payload Event

Setiap event yang diterima melalui SSE akan memiliki format JSON standar (UnifiedSSEPayload) seperti di bawah ini:

Contoh Payload
{
"domain": "block_storage",
"action": "created",
"resource_id": 123,
"status": "Available",
"metadata": null
}

Penjelasan Atribut

  • domain (string): Domain fitur yang memicu event. Contoh: block_storage, virtual_machine, billing.
  • action (string): Aksi yang baru saja diselesaikan. Contoh: created, resized, deleted.
  • resource_id (integer): ID dari resource (VM ID, Volume ID, dll).
  • status (string): Status terbaru dari resource tersebut, misalnya Available, Failed, atau In-Use.
  • metadata (object): (Opsional) Data tambahan yang relevan dengan event terkait.