Server-Sent Events (SSE) memungkinkan sebuah halaman web untuk mendapatkan pembaruan (update) dari server.
Section Artikel
Server-sent event (SSE) adalah keadaan saat dimana sebuah halaman web mendapatkan pembaruan dari server secara otomatis.
Pembaruan otomatis juga sudah ada sebelumnya, tetapi halaman web harus menanyakan terlebih dahulu apakah ada pembaruan yang tersedia. Dengan adanya Server-sent event (SSE), pembaruan akan dilakukan secara otomatis.
Contoh: Pembaruan Facebook / Twitter, pembaruan harga saham, berita-berita, hasil pertandingan olahraga, dll.
Angka-angka dalam tabel menentukan versi browser pertama yang sepenuhnya mendukung Server-sent event (SSE).
API | Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|---|
SSE | 6.0 | 79.0 | 6.0 | 5.0 | 11.5 |
Objek EventSource digunakan untuk menerima pemberitahuan dari SSE.
Contoh :
<!DOCTYPE html> <html> <body> <h1>Mendapatakan pembaruan server</h1> <div id="result"></div> <script> if(typeof(EventSource) !== "undefined") { var source = new EventSource("demo_sse.php"); source.onmessage = function(event) { document.getElementById("result").innerHTML += event.data + "<br>"; }; } else { document.getElementById("result").innerHTML = "Maaf, browser Anda tidak mendukung SSE ..."; } </script> </body> </html>
penjelasan contoh :
Dalam contoh di atas ada beberapa baris kode tambahan untuk memeriksa dukungan browser terhadap SSE, yaitu pada kode :
if(typeof(EventSource) !== "undefined") { // Ya! Mendukung Server-sent events! // Some code..... } else { // Maaf, browser Anda tidak mendukung SSE ... }
Agar contoh di atas berfungsi, maka memerlukan server yang mampu mengirim pembaruan data (seperti PHP atau ASP).
Event stream server-side sintaksnya sederhana yaitu atur header “Content-Type” menjadi “text / event-stream”. Sekarang sudah bisa memulai event-stream.
Contoh :
Kode pada php (demo_sse.php)
<?php header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); $time = date('r'); echo "data: The server time is: {$time}\n\n"; flush(); ?>
Kode pada ASP (VB) (demo_sse.asp)
<% Response.ContentType = "text/event-stream" Response.Expires = -1 Response.Write("data: The server time is: " & now()) Response.Flush() %>
Penjelasan kode :
Object EventSource
Dalam contoh di atas menggunakan event onmessage untuk mendapatkan pesan. Tetapi event yang lain juga tersedia:
Events | Deskripsi |
---|---|
onopen | Saat koneksi ke server dibuka |
onmessage | Saat pesan diterima |
onerror | Saat terjadi kesalahan |