Gerçek zamanlı web uygulamalarında TCP Head-of-Line (HoL) bloklamasını, paket kaybı altında P99 gecikme patlamalarını ve WebTransport RFC 9221 Unreliable Datagram avantajını simüle edin.
Mobil 4G/5G veya kalabalik Wi-Fi ortamlarinda ortalama kayip %2-%4 arasindadir.
| Protokol | Katman | P50 / P99 Gecikme | HoL Bloklama | Datagram Modu | Tarayici Durumu |
|---|---|---|---|---|---|
| WebTransport (HTTP/3 QUIC) | UDP (QUIC) | 18.3 ms / 48 ms | 0 ms (Yok) | Destekleniyor (RFC 9221) | Chrome, Edge, Safari 18+ |
| WebSocket (RFC 6455) | TCP | 19.5 ms / 202.1 ms | 4.4 ms | Desteklenmiyor | Evrensel (%99+) |
| gRPC Streaming (HTTP/2) | TCP (HTTP/2) | 18.7 ms / 185.5 ms | 4.8 ms | Desteklenmiyor | Envoy / gRPC-Web Gerekli |
WebTransport HTTP/3 QUIC Datagram ile sifir HoL bloklama istemci ornegi.
// Modern Tarayicida WebTransport (HTTP/3 QUIC Datagram) Kullanimi:
const transport = new WebTransport("https://streaming.example.com:4433/live");
await transport.ready;
console.log("WebTransport QUIC baglantisi kuruldu (0-RTT)");
// 1. Guvensiz Gercek Zamanli Datagram Gonderimi (Sifir Head-of-Line Gecikmesi):
const writer = transport.datagrams.writable.getWriter();
const playerState = new Uint8Array([0x01, 0xFF, 0x4A, 0x12]);
await writer.write(playerState);
writer.releaseLock();
// 2. Gelen Datagramlari Okuma (Eski kaybolan paketler beklenmez!):
const reader = transport.datagrams.readable.getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
// value icerigini isle (Orn: yeni video karesi veya oyuncu koordinati)
}On yılı aşkın süredir gerçek zamanlı webin bel kemiği olan WebSocket (RFC 6455), TCP taşıma katmanına dayanır. TCP'nin katı bayt sıralama (in-order delivery) garantisi nedeniyle, hareket halindeki mobil bir kullanıcının (4G/5G/zayıf Wi-Fi) bağlantısında tek bir paket kaybolduğunda, işletim sistemi o paket yeniden iletilene (TCP Retransmission) kadar soketteki tüm yeni mesajları dondurur.
Sonuç olarak normalde 30 ms olan soket gecikmesi aniden 350 - 500 ms'lik kuyruk gecikmesi (P99 tail latency) patlamalarına yol açar. Çok oyunculu oyunlarda oyuncu donar, finansal tahtada fiyatlar takılır, canlı ses ve videoda ses kesintileri (glitch) oluşur.
W3C ve IETF tarafından standardize edilen WebTransport, UDP tabanlı HTTP/3 ve QUIC protokolünü kullanır. İki farklı iletişim modeli sunar:
1. Bağımsız Çoklu Akışlar (Multiplexed Streams): Bir akıştaki paket kaybı diğer bağımsız akışları asla duraklatmaz.
2. Güvensiz Datagramlar (Unreliable Datagrams - RFC 9221): Oyun içi koordinatlar veya canlı video kareleri gibi "en son durumun önemli olduğu" veriler için yeniden iletim (retransmission) tamamen devre dışı bırakılır; gecikme sıfır duraklamayla taban RTT seviyesinde kalır.
Kurumsal ortamlarda bazı katı güvenlik duvarları UDP trafiğini engellediği için, modern mimarilerde WebTransport birincil yüksek performans protokolü olarak başlatılır; bağlantı başarısız olursa istemci otomatik olarak WebSocket'e (graceful fallback) yönlendirilir.