# Long Polling

Adres: https://softwaredictionary.org/tr/terimler/long-polling
Kategori: Backend ve API'ler
Son güncelleme: 2026-09-30

Kısaca: Long polling, istemcinin gönderdiği isteği sunucunun yeni veri hazır olana kadar açık tuttuğu, düz HTTP üzerinden gerçek zamanlı push'u taklit eden tekniktir.

## Long polling nedir?

Long polling, yalnızca sıradan HTTP istekleriyle neredeyse gerçek zamanlı güncellemeler almanın bir yoludur. İstemci sunucudan yeni veri ister ve sunucu, 'henüz yok' diyerek hemen yanıt vermek yerine bir şey olana ya da genellikle 20 ile 60 saniye arasındaki bir zaman aşımına ulaşılana kadar isteği açık tutar. İstemci yanıtı alır almaz bir sonraki isteği gönderir; böylece neredeyse her zaman bekleyen bir istek vardır.

Normal ya da kısa polling'de istemci birkaç saniyede bir bir şeyin değişip değişmediğini sorar; bu, hiçbir şey değişmediğinde istekleri boşa harcar, değiştiğinde ise gecikme ekler. Long polling her iki sorunu da çözer: yanıtlar veri oluşur oluşmaz gelir ve boş yanıtlar yalnızca zaman aşımında olur. Sunucunun çok sayıda boşta bekleyen isteği aynı anda açık tutabilmesi gerekir; bu, Node.js gibi olay güdümlü sunuculara uyar ancak her isteğe bir iş parçacığı ayıran sunucularda iş parçacığı havuzlarını tüketebilir.

Normal polling, arka koltuktaki bir çocuğun her dakika 'geldik mi?' diye sormasına benzer; long polling ise bir kez sorup şoförün yalnızca vardığınızda cevap vermesine. Long polling ilk web sohbet ve bildirim sistemlerine güç verdi; WebSocket bağlantıları engellendiğinde hâlâ bir yedek olarak, yeni iş bekleyen bazı mesaj kuyruğu ve bot API'leri tarafından ve basit, güvenlik duvarı dostu bir yaklaşımın yettiği her yerde kullanılır.

Long polling sıklıkla Server-Sent Events ve WebSocket ile karşılaştırılır. Long polling, her mesaj veya mesaj grubu için yeni bir HTTP isteği gerektirir; bu başlık yükü ve istemci yeniden bağlanırken kısa bir boşluk ekler ve o sırada sunucunun yeni mesajları tamponlaması gerekir. Server-Sent Events tek bir yanıtı açık tutar ve birçok mesajı onun üzerinden akıtır; WebSocket ise kalıcı, iki yönlü bir bağlantı açar. Webhook'lar sunucular arasında ilişkili bir sorunu çözer: istemcinin beklemesi yerine, bir olay gerçekleştiğinde sunucu istemcinin URL'sini çağırır.

## Önemli noktalar

- Sunucu her isteği, yeni veri olana ya da zaman aşımı dolana kadar açık tutar.
- İstemci her yanıttan hemen sonra yeni bir istek gönderir.
- Normal polling'e göre güncellemeleri daha hızlı ve daha az boş yanıtla iletir.
- Her mesaj tam bir HTTP isteğine mal olur; bu yüzden SSE veya WebSocket'ten daha ağırdır.
- Kalıcı bağlantıların engellendiği yerlerde yararlı bir yedek olmaya devam eder.

## Örnek: Bir long polling istemci döngüsü

```javascript
// Keep one request waiting for new messages at all times
async function listen(lastId = 0) {
  while (true) {
    try {
      // The server replies only when there are messages newer than lastId,
      // or with an empty list after about 30 seconds
      const res = await fetch("/messages?after=" + lastId);
      const messages = await res.json();
      for (const m of messages) { show(m); lastId = m.id; }
    } catch {
      await new Promise((r) => setTimeout(r, 2000)); // wait before retrying
    }
  }
}
```

## Sık sorulan sorular

**Polling ile long polling arasındaki fark nedir?**

Normal polling'de sunucu, yeni bir şey olmasa bile her isteği hemen yanıtlar; bu yüzden istemci bir zamanlayıcıyla sormaya devam eder. Long polling'de sunucu yeni veri olana kadar yanıtı bekletir; bu da boşa giden istekleri azaltır ve güncellemeleri daha erken iletir.

**Long polling hâlâ kullanılıyor mu?**

Evet, ancak yeni tarayıcı özellikleri için daha az. WebSocket veya SSE bağlantıları engellendiğinde yedek olarak kalır ve birkaç kuyruk ile bot API'si, istemcilerin yeni işi verimli beklemesi için onu kullanır.

**Long polling hangi zaman aşımını kullanmalı?**

Yaygın olarak 20 ile 60 saniye; bu süre, yol boyunca proxy'lerin ve load balancer'ların çoğunlukla 60 saniye civarındaki boşta kalma zaman aşımlarından kısa tutulur. Aksi halde bir aracı, sunucu yanıt vermeden bağlantıyı kesebilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
