Real-Time Networking

Yüksek Eşzamanlıklı Sistemlerde WebSocket ve Binary Protokol Optimizasyonu

Yazar: Kaan Tuncer Tarih: 16 Eylül 2026 Okuma Süresi: 5 Dakika

Binlerce kullanıcının aynı anda veri alışverişinde bulunduğu gerçek zamanlı (real-time) uygulamalarda geleneksel HTTP istekleri yetersiz kalır. Çift yönlü (full-duplex) iletişim sunan WebSocket protokolü ve ikili (binary) veri paketleri gecikmeyi minimuma indirir.

1. JSON Yerine Protocol Buffers (Protobuf) Kullanımı

Metin tabanlı JSON formatı yüksek okunabilirlik sağlasa da bant genişliği ve ayrıştırma (parsing) hızı açısından ağır kalır. İkili serileştirme formatları veri boyutunu %70'e kadar küçültür.

"Milisaniyelerin önem taşıdığı socket mimarilerinde ağa gönderilen her fazla byte, sistem genelinde biriken bir gecikmeye dönüşür."

Örnek WebSocket Server Bağlantı Yönetimi (Node.js)

Aşağıdaki JavaScript kodu, istemcilerden gelen socket bağlantılarını yöneten ve kalp atışı (heartbeat) kontrolü yapan basitleştirilmiş bir sunucu örneğidir:

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
  ws.isAlive = true;
  ws.on('pong', () => { ws.isAlive = true; });

  ws.on('message', (message) => {
    console.log('Gelen İkili Paket:', message);
    ws.send(Buffer.from([0x01, 0x02, 0x03]));
  });
});

2. İletişim Protokollerinin Performans Karşılaştırması

Farklı veri taşıma protokollerinin bant genişliği ve işlemci tüketim değerleri:

Protokol / Format Paket Boyutu (Örnek) Ayrıştırma (Parse) Süresi
HTTP REST + JSON ~450 Bytes 1.2 ms
WebSocket + JSON ~180 Bytes 0.5 ms
WebSocket + Protobuf ~35 Bytes < 0.08 ms

3. Durum Senkronizasyonu ve Reconnection Stratejileri

Anlık ağ kopmalarında kullanıcının kaldığı yerden devam edebilmesi için state synchronization ve expontential backoff algoritmaları entegre edilir.

Sonuç

Düşük gecikmeli ve ölçeklenebilir bir socket altyapısı, doğru protokol seçimi ve hafif veri paketleri ile mümkündür.