EMZETT.
Giriş yap

Gerçek zamanlı uygulama

Kısaca: İstemci ile sunucu arasında (veya birkaç istemci arasında) verilerin fark edilir bir gecikme olmadan değiş tokuş edildiği bir uygulama — örn. sohbetler, canlı panolar veya çok oyunculu oyunlar.

Biraz daha ayrıntılı: Klasik HTTP, istemcinin etkin olarak istemesi gerektiğinden (polling) gerçek zamanlı uygulamalara uygun değildir. Gerçek zamanlılık bunun yerine genellikle WebSocket’ler, Server-Sent Events veya sunucunun bağlı istemcilere kendiliğinden güncelleme gönderebildiği Pusher gibi push hizmetleriyle sağlanır.

Ayrıntılı

Klasik web uygulamalarından temel fark: normal HTTP’de istemci her zaman sunucuya etkin olarak sorar (“pull”) — sunucu istemciye kendiliğinden bir şey gönderemez. Gerçek zamanlı özellikler için birkaç yaklaşım vardır:

  • Polling: istemci yeni veriyi kısa aralıklarla tekrar tekrar ister — uygulaması basit, ama verimsiz (çok sayıda gereksiz istek) ve asla gerçekten “gerçek zamanlı” değil, yalnızca aralık kadar hızlı.
  • Long polling: istemci ister, ancak sunucu yeni bir şey olana (veya zaman aşımı oluşana) kadar isteği açık bırakır — salt polling’e göre daha az ek yük.
  • WebSocket’ler: bir kez kurulan ve kalıcı açık bırakılan, üzerinden iki taraf da her an veri gönderebilen bir bağlantı — gerçek gerçek zamanlı özellikler için bugünün olağan standardı.
  • Server-Sent Events (SSE): WebSocket’lere benzer, ancak yalnızca bir yönde (sunucu → istemci), karşılığında uygulaması daha kolaydır.

Emzett gerçek zamanlı özellikler için (örn. sohbet bildirimleri) barındırılan Pusher hizmetini kullanır; bu, kendi WebSocket sunucunuzu çalıştırmak zorunda kalmadan WebSocket altyapısı sağlar. Tüm gerçek zamanlı yaklaşımlar için düşük gecikme önemlidir — bir olay ile gösterimi arasındaki gecikme ne kadar uzunsa, bir uygulama o kadar az “gerçek zamanlı yetenekli” hissedilir.

Ayrıca bak: Pusher, Gecikme (latency)