Short Polling — adalah teknik interaksi klien-server di mana klien mengirimkan permintaan HTTP pada interval waktu tetap untuk mendapatkan data yang diperbarui. Server memproses setiap permintaan segera, mengembalikan status terkini bahkan jika tidak ada perubahan. Menurut Amazon Web Services, 2024, Short Polling adalah metode polling yang paling sederhana untuk diimplementasikan, namun paling tidak efisien, yang menciptakan beban berlebih pada server dan jaringan.
Poin Utama
Short Polling — adalah pola komunikasi di mana klien secara periodik mengirimkan permintaan HTTP ke server dengan interval yang telah ditentukan, dan server memproses setiap permintaan secara sinkron dan segera mengembalikan hasilnya. Interval polling diatur di sisi klien menggunakan timer dan biasanya berkisar dari 1 hingga 60 detik, tergantung pada persyaratan aktualitas data.
Short Polling secara kronologis merupakan mekanisme pertama untuk mengatur waktu nyata dalam aplikasi web. Pada awal tahun 2000-an, sebelum munculnya XMLHttpRequest generasi kedua, halaman web menggunakan <meta http-equiv=”refresh”> atau pemuatan ulang iframe secara periodik untuk memperbarui konten. Dengan munculnya teknologi AJAX (Asynchronous JavaScript and XML) pada tahun 2005, Short Polling menjadi pendekatan standar untuk memperbarui data tanpa memuat ulang halaman sepenuhnya.
Arsitektur Short Polling mencakup tiga komponen: timer klien, permintaan HTTP, dan penangan server. Klien memulai timer interval, yang saat dipicu akan mengirimkan permintaan GET ke server. Server melakukan kueri ke basis data atau sumber lain, membentuk respons, dan segera mengembalikannya ke klien. Klien memperbarui antarmuka dan menunggu pemicu timer berikutnya. Siklus ini berulang tanpa batas selama aplikasi aktif.
Masalah utama Short Polling — permintaan kosong yang tak terhindarkan. Jika data jarang berubah, sebagian besar permintaan mengembalikan hasil “tidak ada perubahan”, membuang bandwidth jaringan dan waktu prosesor untuk pemrosesan. Dengan 10.000 klien dan interval polling 5 detik, server menerima 2.000 permintaan per detik — sebagian besar tidak berguna jika frekuensi pembaruan adalah 1 peristiwa per menit.
Short Polling bekerja dalam siklus sederhana: klien mengatur timer interval dengan periode tertentu (misalnya, 5000 ms). Pada setiap pemicuan timer, klien membuat permintaan HTTP GET ke endpoint server, biasanya dengan parameter stempel waktu pembaruan terakhir. Server menerima permintaan, memeriksa keberadaan data baru setelah stempel waktu yang ditentukan, dan mengembalikan respons — baik dengan data baru atau dengan indikator tidak adanya pembaruan.
Parameter konfigurasi kritis Short Polling — interval polling. Interval yang terlalu pendek (kurang dari 3 detik) menciptakan beban tinggi pada server dan jaringan. Interval yang terlalu panjang (lebih dari 30 detik) mengurangi aktualitas data. Interval optimal tergantung pada skenario: untuk panel pemantauan — 5–15 detik, untuk umpan berita — 30–60 detik, untuk peringatan kritis — 1–3 detik. Pemilihan interval selalu merupakan kompromi antara aktualitas data dan beban infrastruktur.
Untuk mengurangi beban saat tidak ada aktivitas, digunakan interval adaptif: jika beberapa permintaan berurutan mengembalikan hasil kosong, interval ditingkatkan (misalnya, dari 5 menjadi 15 detik). Saat data baru muncul, interval direset ke nilai minimum. Algoritma penundaan eksponensial (exponential backoff) memungkinkan pengurangan jumlah permintaan kosong 3–5 kali lipat pada pembaruan yang jarang.
Mari kita lihat implementasi klien Short Polling menggunakan setInterval dan Fetch API. Fungsi ini menerima URL endpoint dan interval polling dalam milidetik.
function startPolling(url, intervalMs) {
const lastTimestamp = new Date().toISOString();
const timerId = setInterval(async () => {
try {
const params = new URLSearchParams({
since: lastTimestamp
});
const response = await fetch(url + "?" + params);
const data = await response.json();
if (data.updates && data.updates.length > 0) {
renderUpdates(data.updates);
console.log("Diterima", data.updates.length, "updates");
}
} catch (error) {
console.error("Polling gagal:", error);
}
}, intervalMs);
return timerId;
}
const timer = startPolling("/api/updates", 5000);
// clearInterval(timer) untuk berhenti
Kode membuat interval polling dengan periode 5 detik dan mengirimkan stempel waktu pembaruan terakhir ke server. Server dapat menggunakan parameter ini untuk memfilter data dan hanya mengembalikan catatan baru, mengurangi jumlah informasi yang dikirimkan. Fungsi mengembalikan identifikasi timer untuk memungkinkan penghentian polling.
Implementasi server untuk Short Polling sangat sederhana — ini adalah endpoint REST biasa yang menerima permintaan GET dan mengembalikan respons JSON dengan status terkini atau data yang diubah setelah stempel waktu yang ditentukan.
const express = require("express");
const app = express();
let items = [];
app.get("/api/updates", (req, res) => {
const since = req.query.since;
const filtered = items.filter(item => item.timestamp > since);
res.json({ updates: filtered });
});
app.listen(3000);
Server menerima parameter since dan memfilter catatan yang stempel waktunya melebihi nilai yang ditentukan. Pendekatan ini meminimalkan volume data dalam setiap respons, hanya mengembalikan perubahan inkremental. Jika tidak ada data baru, server mengembalikan array kosong, dan klien melanjutkan polling sesuai jadwal.
Short Polling dan Long Polling menyelesaikan tugas yang sama — pengiriman data dari server — tetapi berbeda secara radikal dalam efisiensi. Short Polling menggunakan interval permintaan tetap, menciptakan beban yang dapat diprediksi, sementara Long Polling mempertahankan koneksi hingga peristiwa terjadi, meminimalkan jumlah respons kosong.
| Kriteria | Short Polling | Long Polling |
|---|---|---|
| Kompleksitas Implementasi | Rendah, REST standar | Sedang, pemrosesan asinkron |
| Keterlambatan Pembaruan | Tetap, hingga N detik | Minimal, saat peristiwa terjadi |
| Jumlah Permintaan | Konstan, N permintaan per menit | Berdasarkan peristiwa, biasanya jauh lebih sedikit |
| Beban Server | Tinggi pada interval kecil | Mempertahankan koneksi, pemrosesan asinkron |
| Lalu Lintas Saat Diam | Maksimal, setiap permintaan dengan header | Minimal, satu koneksi terbuka |
| Penskalaan | Sederhana, permintaan tanpa status | Kompleks, memerlukan antrian peristiwa bersama |
Pemilihan antara teknik tergantung pada frekuensi pembaruan data. Jika peristiwa terjadi lebih sering dari sekali setiap 10 detik — kedua pendekatan memberikan beban yang sebanding, dan Short Polling mungkin lebih sederhana. Jika peristiwa jarang terjadi (jam atau menit antar perubahan) — Long Polling lebih disukai karena tidak membuat permintaan kosong. Untuk skenario menengah, pilihan tergantung pada keterbatasan infrastruktur dan kemungkinan penggunaan WebSocket.
Short Polling digunakan dalam skenario di mana persyaratan aktualitas data rendah dan kesederhanaan implementasi lebih diutamakan daripada efisiensi. Kasus yang paling umum adalah panel administratif internal, sistem pemantauan dengan frekuensi peringatan rendah, dan aplikasi di mana keterlambatan 15–30 detik dapat diterima.
Batasan Penting — Short Polling tidak cocok untuk aplikasi yang kritis terhadap waktu (terminal perdagangan, sistem peringatan darurat), di mana keterlambatan bahkan 1 detik tidak dapat diterima. Dalam skenario seperti itu, perlu menggunakan WebSocket, Server-Sent Events, atau Long Polling. Saat merancang sistem dengan Short Polling, anggaran permintaan harus dihitung: dengan 1.000 klien dan interval 5 detik, server memproses 12.000 permintaan per menit, yang memerlukan basis sumber daya yang sesuai.
Pertanyaan yang Sering Diajukan
Short Polling — adalah saat aplikasi setiap N detik bertanya ke server: "ada data baru?", dan server selalu menjawab, bahkan jika tidak ada yang berubah. Ini seperti mendatangi kotak surat setiap 5 menit untuk memeriksa apakah ada surat baru.
Interval Short Polling optimal tergantung pada skenario: 5–10 detik untuk panel pemantauan, 15–30 detik untuk umpan berita, 30–60 detik untuk halaman status. Interval harus menjadi kompromi antara aktualitas data dan beban server. Mulailah dengan 10 detik dan sesuaikan berdasarkan hasil pengujian.
Short Polling — klien terus-menerus "menarik" server dengan interval tetap. Long Polling — klien melakukan satu permintaan, dan server menahannya tetap terbuka hingga data muncul. Short Polling lebih sederhana untuk diimplementasikan, tetapi menciptakan lebih banyak permintaan kosong pada pembaruan yang jarang.
Short Polling lebih sederhana untuk diimplementasikan daripada WebSocket dan tidak memerlukan protokol khusus — bekerja melalui permintaan HTTP biasa. Short Polling dibenarkan untuk sistem internal sederhana di mana keterlambatan 10–30 detik dapat diterima dan biaya infrastruktur untuk memelihara WebSocket tidak sebanding.
Gunakan interval adaptif: saat tidak ada pembaruan, tingkatkan jeda antar permintaan 2–3 kali lipat. Tambahkan parameter since dengan stempel waktu permintaan terakhir, sehingga server hanya mengembalikan perubahan inkremental. Cache respons di sisi CDN atau server proxy untuk mengurangi beban backend.
Ringkasan
setInterval atau setTimeout rekursif dengan interval konstan atau adaptif.Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga