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.
GET /api/events/stream
Penting: Koneksi bersifat streaming (keep-alive) sehingga Frontend perlu menangani rekoneksi jika terputus (biasanya di-handle otomatis oleh
EventSourcedi 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:
{
"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, misalnyaAvailable,Failed, atauIn-Use.metadata(object): (Opsional) Data tambahan yang relevan dengan event terkait.