WebSocket Nedir ve HTTP'den Farkı Nedir? Canlı Sohbet ve IoT'de Gerçek Zamanlı (Real-Time) İletişim
Klasik HTTP istek-yanıt döngüsünün yetersiz kaldığı anlar: Canlı borsa grafikleri, mesajlaşma uygulamaları ve IoT veri akışı. Sürekli açık çift yönlü (full-duplex) WebSocket tünelinin mimarisini ve farklarını inceliyoruz.
İnternetin temel taşı olan HTTP (Hypertext Transfer Protocol) protokolü 1990'lı yıllardan bu yana web sayfalarını yüklemek için harika bir iş çıkarıyor. Ancak günümüzün modern internet deneyimini düşünün: Canlı borsa ve kripto para fiyatları, WhatsApp veya Telegram gibi anlık mesajlaşma uygulamaları, çok oyunculu çevrimiçi oyunlar ve anlık veri fırlatan IoT sensörleri... Klasik HTTP bu senaryolarda neden nefessiz kalır? Ve neden modern web gerçek zamanlı (real-time) iletişim için WebSocket protokolüne geçti? Bu yazıda iki protokolün mimari farklarını inceliyoruz.
Klasik HTTP Nasıl Çalışır? (İstek ve Yanıt Döngüsü)
HTTP tek yönlü (half-duplex) çalışan bir 'İstek - Yanıt' (Request - Response) protokolüdür. İletişimi daima istemci (tarayıcı veya mobil uygulama) başlatmak zorundadır:
1. İstemci sunucuya TCP bağlantısı açar ve istek gönderir ('Bana yeni mesajları ver').
2. Sunucu isteği işler, yanıtı döner ('Yeni mesaj yok') ve bağlantıyı kapatır.
Eğer sunucuda anlık yeni bir mesaj gelirse, sunucu istemciye doğrudan 'Hey, sana yeni mesaj geldi!' diyemez; çünkü aradaki hat kapalıdır! İstemcinin gelip tekrar sormasını beklemek zorundadır.
Eski Çözümün Çaresizliği: Polling (Sürekli Sorgulama)
WebSocket icat edilmeden önce geliştiriciler anlık veri çekmek için 'Polling' yöntemini kullanırdı. Tarayıcı her 1 saniyede bir sunucuya 'Yeni mesaj var mı? Yeni mesaj var mı?' diye istek atardı. Bu durum korkunç bir bant genişliği ve sunucu yükü israfıydı; çünkü 1000 istekten 999'u boş döner, her istekte gereksiz HTTP başlıkları (headers, cookies) taşınır ve sunucu kaynakları tükenirdi.
Devrim: WebSocket Protokolü Nedir ve Nasıl Çalışır?
WebSocket; tek bir TCP bağlantısı üzerinden istemci ile sunucu arasında sürekli açık kalan, çift yönlü (full-duplex) ve son derece hafif bir veri tüneli kurar.
Süreç Şöyle İşler:
1. El Sıkışma (Handshake): İstemci sunucuya standart bir HTTP isteği gönderir ve 'Bağlantıyı WebSocket protokolüne yükseltmek istiyorum (Upgrade: websocket)' der.
2. Tünel Açılır: Sunucu onay verdiğinde (101 Switching Protocols), HTTP bağlantısı sonlanır ve yerini kalıcı bir WebSocket boru hattına bırakır.
3. Çift Yönlü Akış: Artık hat asla kapanmaz! Sunucu istediği anda istemciye sıfır gecikmeyle (milisaniyeler içinde) veri fırlatabilir; istemci de sunucuya veri gönderebilir. Üstelik her mesajın başında yüzlerce baytlık HTTP başlığı taşınmaz; sadece 2-14 baytlık minicik bir çerçeve (frame) ile veri akar.
HTTP mi WebSocket mi? Ne Zaman Hangisi Kullanılmalı?
- HTTP Tercih Edilmeli:
* Blog yazıları, e-ticaret ürün detayları, haber siteleri gibi statik veya seyrek değişen içeriklerde.
* CRUD işlemlerine dayalı standart REST API servislerinde.
* Arama motoru optimizasyonunun (SEO) ve önbelleklemenin (caching) kritik olduğu sayfalarda.
- WebSocket Tercih Edilmeli:
* Canlı sohbet ve mesajlaşma sistemlerinde (Chatbots, WhatsApp Web).
* Saniyede onlarca kez güncellenen finansal grafikler, canlı skorlar ve borsa tahtalarında.
* Çok oyunculu (multiplayer) tarayıcı oyunlarında.
* IoT cihazlarının anlık telemetri verilerini sunucuya canlı akıtmasında (örneğin akıllı şehir ve sensör ağları).
Sonuç: Doğru Senaryoya Doğru Protokol
WebSocket, HTTP'nin yerini almak için değil, HTTP'nin yetersiz kaldığı gerçek zamanlı ihtiyaçları karşılamak için tasarlanmıştır. Modern bir mimaride kullanıcı kimlik doğrulaması ve ilk sayfa yüklemesi HTTP (REST API) ile yapılırken; canlı bildirimler ve anlık sohbet akışı arkada çalışan bir WebSocket bağlantısı üzerinden yürütülür.