WebSocket, tek bir TCP bağlantısı üzerinden tam çift yönlü iletişim kanalları sağlayan bir iletişim protokolüdür. Bir istemci ve sunucu arasında gerçek zamanlı, iki yönlü etkileşimi mümkün kılmak için tasarlanmıştır. WebSockets, HTTP üzerinden ilk el sıkışmayla başlar, ardından bağlantı WebSocket’e yükseltilir ve sürekli olarak yeni bağlantılar açmaya gerek kalmadan sürekli iletişime olanak tanır.
WebSocket’ler nasıl çalışır?
WebSockets, istemci ile sunucu arasında kalıcı bir bağlantı kurarak çalışır. İşlem, bir WebSocket bağlantısı başlatmak için istemciden sunucuya bir HTTP isteği ile başlar. Sunucu WebSockets’i destekliyorsa bir kabul mesajıyla yanıt verir ve bağlantı HTTP’den WebSocket’e yükseltilir. WebSocket bağlantısı bir kez kurulduktan sonra çift yönlü iletişime izin verir; bu, hem istemcinin hem de sunucunun, bağlantıyı yeniden kurmaya gerek kalmadan istedikleri zaman mesaj gönderip alabileceği anlamına gelir.
WebSocket, tek bir TCP bağlantısı üzerinden tam çift yönlü iletişim için bir protokoldür. WebSockets’i kullanmak için bir istemci (genellikle bir web tarayıcısı), bir HTTP yükseltme isteği kullanarak WebSocket sunucusuyla bağlantı başlatır. Sunucu isteği kabul ederse, protokol HTTP’den WebSocket’e geçerek iki tarafın gerçek zamanlı olarak mesaj alışverişinde bulunmasına olanak tanır. WebSockets, sohbet uygulamaları, canlı bildirimler ve çevrimiçi oyunlar gibi canlı güncellemeler gerektiren uygulamalarda yaygın olarak kullanılır.
WebSocket bağlantısı, istemciden sunucuya bir HTTP isteği ile başlayan bir süreç aracılığıyla kurulur. Bu istek, istemcinin bir WebSocket bağlantısı kurmak istediğini belirten bir Yükseltme başlığı içerir. Sunucu WebSockets’i destekliyorsa, yükseltmeyi onaylayan bir durum koduyla yanıt verir. Bu anlaşma tamamlandıktan sonra bağlantı HTTP’den WebSocket’e geçirilerek tam çift yönlü iletişime olanak sağlanır.
Temel olarak WebSockets, iletişim oturumu süresince açık kalan bir TCP bağlantısından yararlanarak çalışır. İlk HTTP anlaşmasının ardından WebSockets, tek ve uzun ömürlü bir TCP bağlantısını korur. Bu bağlantı, minimum ek yük ile istemci ve sunucu arasında verimli veri alışverişine olanak tanır. Mesajlar, meta verileri ve yük verilerini içeren WebSocket çerçeveleri olarak gönderilir ve düşük gecikmeyle gerçek zamanlı iletişime olanak tanır.