Web Socket ve HTTP Nedir? — Aralarındaki farklar
Web Socket ve HTTP, internet üzerinden iletişimde kritik rol oynayan farklı iki temel protokoldür. Bu protokoller arasındaki temel farklılıklara, işlevlerine ve uygulama alanlarına odaklanacağım.
HTTP temelde ne yapar?
HTTP (Hypertext Transfer Protocol), kabaca client tarafından servera bir requestin atıldığı ve serverin o requesti işledikten sonra bir response dönmesiyle haberleşmeyi sağlayan yapı. Bu iletişim yöntemi bilgisayar bilimlerinde request & response veya request & reply olarak geçer.
Web socketleri temelde ne yapar?
Web socket, server ve client arasında sürekli açık kalacak bir bağlantı kurar, request & response’un aksine bir kere bağlantı kurulur ve bağlantı açık olduğu sürece birbirleri ile iletişim kurup, birbirlerine herhangi bir zamanda veri gönderebilirler.
Aralarındaki temel farklar
Temelde yaptıklarından bahsettiğim gibi aralarındaki en büyük farkı siz de görmüş olmalısınız. Bu en büyük fark, birbirleri ile iletişim kurarken bağlantı için kullandıkları yol. Web socket bahsettiğim gibi client ve server arasında sürekli açık kalacak bir bağlantı kurar ve birbirlerine verileri tek bir bağlantı noktasından, istedikleri zaman iletebilirler.
HTTP’de client tarafından her requestte bir bağlantı açılır ve server tarafından response iletilene kadar o bağlantı kapanmaz, dolayısıyla her iletişimde bir bağlantı açılmalı ve o bağlantı kapatılmalıdır bundan dolayı ortaya bir gecikme çıkar.
Web socket’de ise birbirleri ile bir kere bağlantı kurup ve bu bağlantının sürekli açık kalmasından dolayı veri alışverişi için daha az trafik ve gecikme oluşur, bundan dolayı web socket ile kurulan bağlantılar ile gerçekleşen veri akışına gerçek zamanlı — real-time diyebiliyoruz.
HTTP tek yönlüdür, eğer client bir istek yapmazsa server bir veri gönderemez. Çünkü client bir istek gönderene kadar kadar client ve server arasında veri gönderecek bir bağlantı açılmamıştır.
Web socketlerinde, HTTP’nin aksine çift taraflı iletişim desteklenir. Client ve server birbirleri ile bağlantı kurduktan sonra server, client’dan request gelmesini beklemeden ona veri gönderebilir.
Web socket’in kullanım alanları
Web socket’in en bilindik kullanımı chat, sohbet uygulamalarıdır. İki insan, birbirleri ile anlık olarak iletişim kurmak istedikleri zaman, client görevi gören iki bilgisayar veya telefon, bir server yardımı ile birbirleri ile iletişimde olacağı bir çözüm ile bunu sağlamanın nasıl olacağını bakalım.
A insanı, B insanının bir mesaj iletmek istediğinde, A insanı kullandığı client üzerinden server’a bir veri yollayacak, server bu verinin kimden geldiğini ve kime teslim edilmesi gerektiğini A insanın kullandığı client üzerinden alacak ve B insanın kullandığı client’a ona A insanından bir mesaj geldiğini bildirecek. Eğer web socket kullanılmasaydı şöyle olacaktı; A’nın clienti, B insanına bir mesaj göndermek için server’a bir istek yollayacaktı. B’nın clienti, server’a bana herhangi bir mesaj iletildi mi diye sormadan A’dan gelen mesajdan haberdar olamayacaktı ve B veya A kendisine iletilecek mesajlar için sürekli server’a ‘Bana gelen yeni bir mesaj var mı?’ diye sorması gerekecekti.
Finansal bir uygulama geliştirdiğimizi varsayalım, canlı piyasa verilerini kullanıcılara sunmak gibi bir görevimiz var. Klasik bir yaklaşım ile bu görevimizi yerine getirmek için HTTP kullanırsak uygulamamızı kullanan kullanıcılar anlık durumları görmek için ya her seferinde kendileri sayfalarını yenileyecekti ya da onların haberi olmadan client tarafında bu işlem server’a istek atılarak gerçekleşecekti. Web socket kullandığımızdaysa, kullanıcıların clientları ve server arasına bir bağlantı açılacak ve o bağlantıdan herhangi bir istek beklemeksizin server client’a piyasa verileri ile ilgili bilgilendirmeyi yapabilecekti. Bu sayade kullanıcılar sayfayı yenilemeden veya kullanıcıların clientları onlara çaktırmadan server’a istek atmadan güncel değerlendirmeleri görebilecekler.
Sonuç
Web socket ve HTTP, internet üzerinden iletişimde kritik rol oynayan iki önemli protokol. Bunların ne zaman ve nerede kullanılması gerektiğine dair kararlar somut tecrübeler ile daha kolay alınacaktır. Web socket, HTTP’ye göre, web socketlerinin sağladığı sürekli bağlantı sayesinde, kullanıcılar sayfalarını yenilemeden veya onların clientları servera request atmadan güncel verilere anında erişebilir. Bu, özellikle gerçek zamanlı bilgi akışı gerektiren uygulamalarda büyük bir avantaj sağlar.