smaple.tr
WebSocket

Gerçek Zamanlı İletişim: WebSocket ve SSE Rehberi [2026]

Mehmet Kurtipek
December 20, 2025
10 min read
WebSocket
SSE
gerçek zamanlı iletişim
Socket.io
real-time
chat sistemi
canlı bildirim
pub/sub

Gerçek Zamanlı İletişim Neden Kritik?

Modern web ve mobil uygulamalarda kullanıcılar, verilerin anlık olarak güncellenmesini bekler. Bir sohbet uygulamasında mesajların gecikmeden ulaşması, bir borsa platformunda fiyatların saniyeler içinde güncellenmesi veya bir proje yönetim aracında ekip arkadaşlarının değişikliklerini canlı görmek artık standart beklentiler arasında yer alır. Geleneksel HTTP istek-yanıt modeli bu tür senaryolarda yetersiz kalır; çünkü sunucu tarafından istemciye proaktif veri gönderimi mümkün değildir.

Bu rehberde WebSocket protokolünü derinlemesine inceleyecek, Server-Sent Events (SSE) ile karşılaştıracak ve gerçek zamanlı sistemlerin ölçeklendirilmesine yönelik pratik stratejiler sunacağız.

HTTP'nin Sınırları ve Gerçek Zamanlı İhtiyacı

HTTP protokolü, istemcinin bir istek göndermesi ve sunucunun bu isteğe yanıt vermesi prensibine dayanır. Sunucu, istemciye kendi inisiyatifiyle veri gönderemez. Bu sınırlamayı aşmak için yıllar boyunca çeşitli yöntemler geliştirildi.

Polling (Yoklama)

En basit yaklaşım olan polling yönteminde istemci, belirli aralıklarla sunucuya istek gönderir. Her 5 saniyede bir "yeni veri var mı?" diye sormak gibi düşünebilirsiniz. Bu yöntem işe yarasa da ciddi dezavantajları vardır: gereksiz ağ trafiği oluşturur, sunucu kaynaklarını tüketir ve gerçek zamanlılık yanılsaması sunar. Veri tam olarak iki yoklama arasında gelirse kullanıcı bunu ancak bir sonraki istekte görecektir.

Long Polling (Uzun Yoklama)

Long polling, klasik polling yönteminin geliştirilmiş halidir. İstemci sunucuya bir istek gönderir ve sunucu yeni veri oluşana kadar bağlantıyı açık tutar. Veri geldiğinde yanıtı döner ve istemci hemen yeni bir istek başlatır. Bu yaklaşım polling'e göre daha verimlidir ancak her veri transferi için yeni bir HTTP bağlantısı gerektirir, HTTP başlıkları tekrar tekrar gönderilir ve sunucu tarafında açık bağlantı yönetimi karmaşıklaşır.

WebSocket ve SSE'nin Ortaya Çıkışı

Bu sınırlamaları aşmak için iki modern teknoloji öne çıkar: WebSocket ve Server-Sent Events (SSE). Her ikisi de kalıcı bağlantılar üzerinden veri akışı sağlar ancak mimari yaklaşımları ve kullanım alanları farklıdır.

WebSocket Protokolü Derinlemesine

WebSocket, istemci ile sunucu arasında tam çift yönlü (full-duplex) iletişim kanalı açan bir protokoldür. RFC 6455 standardı ile tanımlanmış olan WebSocket, HTTP üzerinden başlatılan bir el sıkışma (handshake) sonrasında TCP bağlantısını kalıcı bir iletişim kanalına dönüştürür.

Bağlantı Yaşam Döngüsü

WebSocket bağlantısı üç aşamadan oluşur. İlk aşamada istemci, HTTP Upgrade isteği gönderir. Sunucu bu isteği kabul ederse protokol HTTP'den WebSocket'e yükseltilir. Artık her iki taraf da birbirine bağımsız olarak mesaj gönderebilir. Bağlantı, taraflardan biri kapatana veya ağ kesintisi oluşana kadar açık kalır.

Handshake süreci HTTP tabanlı olduğu için mevcut altyapılarla uyumludur. Bağlantı kurulduktan sonra veri çerçeveleri (frames) üzerinden iletişim sağlanır. Metin ve ikili (binary) veri türleri desteklenir; bu da WebSocket'i hem JSON mesajları hem de dosya transferi gibi senaryolar için uygun kılar.

ws Kütüphanesi ile Temel Kullanım

Node.js ekosisteminde en performanslı WebSocket kütüphanesi ws'dir. Minimal bir API sunar ve production ortamlar için optimize edilmiştir. Sunucu tarafında bir WebSocket sunucusu oluşturmak, bağlantıları dinlemek ve mesajları işlemek birkaç satır kodla mümkündür. İstemci tarafında ise tarayıcıların yerleşik WebSocket API'si doğrudan kullanılabilir.

ws kütüphanesi, binary veri desteği, ping/pong çerçeveleri ve bağlantı sıkıştırma (permessage-deflate) gibi özellikler sunar. Overhead'i minimum düzeyde tutarak yüksek performans sağlar.

Socket.io Kullanımı ve Avantajları

Socket.io, WebSocket üzerine inşa edilmiş bir soyutlama katmanıdır. Otomatik yeniden bağlanma, oda (room) yönetimi, broadcast mekanizması ve namespace desteği gibi üst düzey özellikler sunar. WebSocket bağlantısı kurulamadığında otomatik olarak long polling'e geri döner.

Socket.io'nun en güçlü yanlarından biri oda (room) konseptidir. Kullanıcıları gruplara ayırarak belirli bir gruba mesaj göndermek son derece kolaydır. Bir sohbet uygulamasında her sohbet odası, bir canlı skor uygulamasında her maç bir Socket.io odasına karşılık gelebilir.

Ancak Socket.io'nun kendi protokolünü kullandığını unutmamak gerekir. Saf WebSocket istemcileri Socket.io sunucusuna doğrudan bağlanamaz. Bu durum, mobil istemciler veya üçüncü taraf entegrasyonlarında ek kütüphane gereksinimine yol açar.

Server-Sent Events (SSE) Rehberi

SSE, sunucudan istemciye tek yönlü veri akışı sağlayan bir teknolojidir. HTTP protokolü üzerinde çalışır ve tarayıcıların EventSource API'si ile kolayca kullanılabilir. WebSocket'in aksine yalnızca metin tabanlı veri gönderir ve iletişim tek yönlüdür: sunucudan istemciye.

SSE'nin Güçlü Yönleri

SSE, HTTP/2 ile mükemmel uyum sağlar. HTTP/2'nin multiplexing özelliği sayesinde tek bir TCP bağlantısı üzerinden birden fazla SSE akışı yönetilebilir. Ayrıca SSE, otomatik yeniden bağlanma mekanizmasına sahiptir; bağlantı kesildiğinde tarayıcı belirli bir süre sonra otomatik olarak yeniden bağlanır. Son olay kimliği (Last-Event-ID) başlığı sayesinde kaçırılan olaylar tekrar alınabilir.

SSE, mevcut HTTP altyapısıyla tamamen uyumludur. Yük dengeleyiciler, proxy sunucuları ve güvenlik duvarları SSE trafiğini sorunsuz yönetir. Bu durum, kurumsal ortamlarda SSE'yi tercih edilebilir kılar.

SSE Kullanım Senaryoları

SSE, sunucudan istemciye tek yönlü veri akışının yeterli olduğu senaryolarda idealdir. Canlı bildirimler, haber akışları, borsa fiyat güncellemeleri, sistem izleme panelleri ve yapay zeka uygulamalarında token bazlı yanıt akışı SSE'nin en uygun olduğu alanlardır. Kullanıcının sunucuya sık veri göndermesi gerekmiyorsa SSE, WebSocket'e göre daha basit ve verimli bir çözüm sunar.

WebSocket vs SSE vs Long Polling Karşılaştırması

Bu üç teknolojinin seçimi, projenin gereksinimlerine bağlıdır. WebSocket tam çift yönlü iletişim sunar, düşük gecikme sağlar ve ikili veri desteği vardır; ancak altyapı uyumluluğu daha karmaşıktır. SSE yalnızca sunucudan istemciye veri akışı sağlar, HTTP uyumludur ve otomatik yeniden bağlanma özelliği içerir; ancak ikili veri gönderilemez ve iletişim tek yönlüdür. Long polling ise en geniş uyumluluğa sahiptir ancak yüksek gecikme ve kaynak tüketimi dezavantajları bulunur.

Genel bir kural olarak: iki yönlü iletişim gerekiyorsa WebSocket, yalnızca sunucudan istemciye veri akışı yeterliyse SSE, eski tarayıcı desteği kritikse long polling tercih edilmelidir. Pek çok modern uygulamada SSE ve WebSocket birlikte kullanılabilir; örneğin bildirimler için SSE, sohbet için WebSocket.

WebSocket Bağlantılarını Ölçeklendirme

Tek bir sunucu, binlerce hatta on binlerce eşzamanlı WebSocket bağlantısını yönetebilir. Ancak uygulama büyüdükçe birden fazla sunucu arasında bağlantıları koordine etmek gerekir. Bu noktada ölçeklendirme stratejileri devreye girer.

Sticky Sessions (Yapışkan Oturumlar)

WebSocket bağlantıları durum bilgisi içerir (stateful). Bir istemcinin WebSocket bağlantısı belirli bir sunucu üzerinde kurulduğundan, sonraki tüm iletişim aynı sunucu üzerinden devam etmelidir. Yük dengeleyici düzeyinde sticky sessions yapılandırması, istemcilerin her zaman aynı sunucuya yönlendirilmesini sağlar. IP hash veya cookie tabanlı yönlendirme bu amaçla kullanılabilir.

Redis Pub/Sub ile Sunucular Arası İletişim

Birden fazla sunucu kullandığınızda, bir sunucuya bağlı istemciye gönderilen mesajın diğer sunuculardaki ilgili istemcilere de ulaşması gerekir. Redis Pub/Sub bu sorunu elegana bir şekilde çözer. Her sunucu Redis kanallarına abone olur; bir mesaj yayınlandığında tüm sunucular bu mesajı alır ve kendi bağlı istemcilerine iletir.

Socket.io için @socket.io/redis-adapter paketi bu entegrasyonu otomatikleştirir. Redis Streams ise mesaj kalıcılığı gereken senaryolarda Pub/Sub'a alternatif olarak değerlendirilebilir.

Yatay Ölçeklendirme Stratejileri

Yatay ölçeklendirmede dikkat edilmesi gereken noktalar arasında bağlantı limitleri, bellek yönetimi ve sağlık kontrolü yer alır. Her sunucunun işletim sistemi düzeyinde dosya tanımlayıcı (file descriptor) limiti vardır ve bu limit eşzamanlı bağlantı sayısını sınırlar. Bağlantı başına bellek tüketimini izlemek ve optimize etmek gerekir. Sağlık kontrolü (health check) mekanizmaları, yanıt vermeyen sunucuların yük dengeleyiciden çıkarılmasını sağlamalıdır.

WebSocket Güvenliği ve Kimlik Doğrulama

WebSocket bağlantılarında güvenlik, HTTP tabanlı uygulamalardan farklı yaklaşımlar gerektirir. Bağlantı bir kez kurulduktan sonra her mesaj için ayrı bir kimlik doğrulama yapılmaz; bu nedenle bağlantı kurulum aşamasında güvenliğin sağlanması kritiktir.

Kimlik Doğrulama Yaklaşımları

En yaygın yöntem, WebSocket handshake sırasında token tabanlı kimlik doğrulama uygulamaktır. İstemci, bağlantı isteğinde JWT veya benzeri bir token gönderir; sunucu bu token'ı doğrulayarak bağlantıyı kabul veya reddeder. Token'ın query string yerine ilk mesajda veya HTTP başlıklarında gönderilmesi güvenlik açısından tercih edilir, çünkü query string parametreleri sunucu loglarında görünebilir.

Token süresinin dolması durumunda mevcut WebSocket bağlantısının nasıl yönetileceği de planlanmalıdır. Periyodik token yenileme mekanizması veya sunucu tarafında bağlantı bazlı yetkilendirme kontrolü uygulanabilir.

Güvenlik En İyi Uygulamaları

Üretim ortamında WSS (WebSocket Secure) protokolü kullanılmalıdır; bu, TLS üzerinden şifrelenmiş WebSocket bağlantısı anlamına gelir. Origin kontrolü yapılarak yalnızca yetkili alan adlarından gelen bağlantılar kabul edilmelidir. Mesaj boyutu sınırlaması, bağlantı hızı limitleme (rate limiting) ve girdi doğrulama da temel güvenlik önlemleri arasında yer alır.

Heartbeat ve Yeniden Bağlanma Desenleri

Ağ bağlantıları güvenilir değildir. Mobil cihazlarda ağ geçişleri, proxy zaman aşımları veya sunucu yeniden başlatmaları bağlantı kopmasına neden olabilir. Sağlam bir gerçek zamanlı sistem, bu durumları zarif bir şekilde yönetmelidir.

Ping/Pong Mekanizması

WebSocket protokolü, ping ve pong kontrol çerçevelerini destekler. Sunucu düzenli aralıklarla ping çerçevesi gönderir; istemci pong ile yanıt verir. Belirli bir süre içinde pong alınmazsa bağlantı kopmuş kabul edilir ve kaynaklar serbest bırakılır. Bu mekanizma, "zombi bağlantıları" (fiziksel olarak kopmuş ancak sunucu tarafında hala açık görünen bağlantılar) tespit etmek için gereklidir.

Uygulama düzeyinde de heartbeat mesajları gönderilebilir. Bu yaklaşım, ara katman (proxy, yük dengeleyici) zaman aşımlarını önlemek için kullanışlıdır.

Akıllı Yeniden Bağlanma

Bağlantı koptuğunda istemcinin otomatik olarak yeniden bağlanması gerekir. Ancak tüm istemcilerin aynı anda yeniden bağlanmaya çalışması "thundering herd" sorununa yol açabilir. Exponential backoff stratejisi, her başarısız denemeden sonra bekleme süresini artırarak sunucu üzerindeki yükü dağıtır. Jitter (rastgele gecikme) eklenmesi, istemcilerin eşzamanlı bağlanma girişimlerini önler.

Yeniden bağlanma sonrasında kaçırılan mesajların telafi edilmesi de önemlidir. Son alınan mesajın kimliğini saklayarak, bağlantı kurulduktan sonra eksik mesajları sunucudan talep etmek yaygın bir yaklaşımdır.

Kullanım Senaryoları ve Mimari Öneriler

Sohbet Sistemleri

Sohbet uygulamaları, WebSocket'in en klasik kullanım alanıdır. Her kullanıcı bir WebSocket bağlantısı üzerinden mesaj gönderir ve alır. Oda yönetimi, yazıyor bildirimi (typing indicator), okundu bilgisi ve çevrimiçi durum gibi özellikler WebSocket üzerinden gerçekleştirilir. Socket.io'nun oda yapısı bu senaryoya doğal olarak uygundur.

Canlı Bildirim Sistemleri

Bildirimler genellikle sunucudan istemciye tek yönlüdür ve SSE bu senaryo için idealdir. Kullanıcıya özel bildirim kanalları oluşturulabilir; yeni sipariş, mesaj veya sistem uyarısı gibi olaylar anında iletilir. SSE'nin otomatik yeniden bağlanma ve son olay kimliği özellikleri, bildirim kaybını önler.

Canlı Kontrol Panelleri

Sistem izleme, satış metrikleri veya IoT sensör verileri gibi sürekli güncellenen verilerin görselleştirilmesinde SSE veya WebSocket kullanılabilir. Veri akışının yoğunluğuna bağlı olarak throttling (kısma) uygulanması, istemci tarafındaki işleme yükünü azaltır.

Fiyat Toplama Platformları

Fiyat karşılaştırma veya pazar yeri platformlarında farklı kaynaklardan gelen fiyat verilerinin anlık güncellenmesi gerekir. Smart Maple olarak bu tür agregasyon platformlarında WebSocket tabanlı fiyat akışı sistemleri tasarlarken, kaynak başına bağımsız bağlantı yönetimi ve istemciye birleştirilmiş veri akışı sunulması yaklaşımını tercih ediyoruz.

Eşzamanlı Düzenleme

Google Docs benzeri eşzamanlı düzenleme sistemlerinde WebSocket, kullanıcılar arasında operasyon senkronizasyonu sağlar. Operational Transformation (OT) veya Conflict-free Replicated Data Types (CRDT) algoritmaları ile çakışma çözümleme uygulanır.

Bağlantı Yönetimi ve Performans Optimizasyonu

Büyük ölçekli gerçek zamanlı sistemlerde bağlantı yönetimi kritik bir mühendislik problemidir. On binlerce eşzamanlı bağlantıyı verimli şekilde yönetmek için çeşitli optimizasyonlar uygulanmalıdır.

Mesaj sıkıştırma, özellikle JSON gibi metin tabanlı mesajlarda bant genişliği tasarrufu sağlar. WebSocket'in permessage-deflate uzantısı bu amaçla kullanılabilir; ancak CPU maliyetini artırdığını göz önünde bulundurmak gerekir.

Mesaj gruplayarak (batching) gönderim, yüksek frekanslı güncellemelerde ağ verimliliğini artırır. Örneğin borsa uygulamasında her fiyat değişikliğini ayrı mesaj olarak göndermek yerine, 100 milisaniyelik pencereler içinde toplanan değişiklikleri tek mesajda göndermek daha verimlidir.

Bağlantı havuzu yönetimi, sunucu kaynaklarının etkin kullanımını sağlar. Aktif olmayan bağlantıların belirli bir süre sonra kapatılması, yeni bağlantılar için kaynakları serbest bırakır.

Teknoloji Seçimi: Pratik Rehber

Gerçek zamanlı iletişim teknolojisi seçiminde şu soruları yanıtlamak faydalıdır. İletişim tek yönlü mü yoksa çift yönlü mü? Saniyede kaç mesaj işlenecek? Kaç eşzamanlı bağlantı bekleniyor? Mevcut altyapı WebSocket'i destekliyor mu? Ekibin bu teknolojilerle deneyimi var mı?

Basit bildirim ve veri akışı senaryolarında SSE yeterlidir ve uygulaması daha kolaydır. İki yönlü iletişim, düşük gecikme veya ikili veri gerektiren senaryolarda WebSocket tercih edilmelidir. Socket.io, hızlı prototipleme ve ekosistem avantajları için uygundur; ws ise maksimum performans ve kontrol gerektiren durumlar için idealdir.

Sonuç

Gerçek zamanlı iletişim, modern uygulamaların ayrılmaz bir parçası haline geldi. WebSocket ve SSE, bu alandaki iki temel teknolojidir; her birinin güçlü ve zayıf yönleri farklı kullanım senaryolarına hitap eder. Doğru teknolojiyi seçmek, yalnızca protokol özelliklerini bilmekle değil, aynı zamanda ölçeklendirme, güvenlik ve hata toleransı gibi operasyonel gereksinimleri de anlamakla mümkündür.

Smart Maple olarak gerçek zamanlı sistemler tasarlarken, projenin ölçeğine ve gereksinimlerine uygun teknolojiyi seçmeyi, sağlam yeniden bağlanma ve hata yönetimi mekanizmaları kurmayı ve ölçeklendirme stratejisini en baştan planlamayı önceliklendiriyoruz. Hangi teknolojiyi seçerseniz seçin, production ortamda heartbeat mekanizması, akıllı yeniden bağlanma ve mesaj sıralama garantisi gibi temel bileşenleri ihmal etmemeniz kritik öneme sahiptir.

Related Articles

August 10, 2026

MLOps Rehberi: Makine Öğrenmesi Modellerini Production'a Taşıma

Giriş: MLOps Nedir ve Neden Önemlidir? Makine öğrenmesi modelleri geliştirmek günümüzde nispeten kolaydır. Açık kaynak kütüphaneleri kullanarak son derece başarılı modeller oluşturabiliriz. Ancak bu modelleri production ortamına taşıyarak, ölçeklendirebilir, güvenilir ve sürdürülebilir şekilde çalıştırmak tamamen farklı bir hikayedir. Araştırmalara göre, veri bilimcileri tarafından geliştirilen makine öğrenmesi modellerinin %87'si hiçbir zaman production ortamına ulaşmaz. Bu başarısızlı

Read More
August 9, 2026

LLM Fine-Tuning ve Özel Model Eğitimi Rehberi [2026]

LLM Fine-Tuning: Kurumsal Yapay Zeka Stratejisinin Temel Taşı Büyük dil modelleri (LLM), genel amaçlı metin üretimi ve anlama konusunda etkileyici performans sergiliyor. Ancak kurumsal ortamlarda belirli bir alan, terminoloji veya iş sürecine uyum sağlamaları gerektiğinde, genel bilgileri çoğu zaman yetersiz kalıyor. Bu noktada fine-tuning, yani ince ayar süreci devreye giriyor. Fine-tuning sayesinde mevcut bir temel modeli, kendi verileriniz ve ihtiyaçlarınız doğrultusunda özelleştirmek

Read More
August 8, 2026

Bilgisayarlı Görü Uygulamaları: Nesne Tespiti, OCR ve Endüstriyel AI

Bilgisayarlı Görü Uygulamaları: Endüstriyel ve Medikal AI'nin Temel Teknolojisi Bilgisayarlı görü, makine öğrenmesinin en etkili alanlarından biridir. Türkiye'de yaşanan dijital dönüşüm sürecinde, özellikle üretim, sağlık ve lojistik sektörlerinde görü tabanlı otomasyon kritik hale gelmiştir. Smart Maple olarak Ankara'da geliştirdiğimiz çözümler, son beş yılda 150+ kuruluşunun üretim verimliliğini ortalama %35 oranında artırmıştır. Bu rehberde, bilgisayarlı görü teknolojisinin iş değeri

Read More