TEMEL İNTERNET BILGISI

HTTP Request/Response ve WebSocket

Bu yazıda İstemci(Tarayıcı veya Mobil Cihaz) ile Sunucu(Server) arasında kullanılan iletişim yöntemlerinden HTTPRequest ve Websocket yöntemlerini analiz ediyorum.

--

Tarayıcı (Browser) ve Mobil cihazlar, Sunucular ile haberleşerek üzerlerinde bir sürü farklı uygulama geliştirmemize olanak sağlıyorlar. Örneğin ePosta araçları, oyun, E-Ticaret sitesi, Netflix, Spotify, vb… Hepsinde biz kullanıcıların kullandığımız cihazlardan , sunuculara bağlantı kurarak uygulamalarımızı gerçekleştiriyoruz.

Burada 2 yöntemden bahsediyor olacağım.

  • HTTP
  • WebSocket
HTTP ve Websocket

Yukarıdaki resimde görüldüğü gibi HTTPRequest tek yönlü yani sadece istemci sunucuya bir takım istekler gönderiyor ve bu istekler doğrultusunda sunucu cevap veriyor, Websocket ise istemcinin mesaj göndermesi beklemeden sunucudan istemciye mesaj gönderebiliyor yani çift yönlü bir birbirini tetikleme var.

1. Kullanım Alanları

1.1 HTTP Request / Response

İstemcide sunucudan bir takım verileri , listeleri çekip göstermek istediğimizde, veya bir kayıt oluşturma, bir sipariş verme, Tamam düğmesine bastığımızda kullanılan iletişim yöntemidir. Şu anda Web / Mobil uygulamaların çoğunda ekranınızda gördüğünüz listeler ve veriler veya buradan bir sipariş verdiğinizde vb… %90 sayfalarda işletile istemci/sunucu iletişim yöntemidir.

1.2 WebSocket Kullanım Alanları

WebSocket network üzerinden real-time güncellemesi ve sürekli veri akışı olan durumlarda kullanılması mantıklıdır

Gerçek Zamanlı Uygulamalar (Real Time Application) : Borsa, Bitcoin, Canlı Hava Durumu, Seçim Durumu gibi Web Sitelerinde sürekli veri gelince bu veriyle ekranın güncellenmesi gereken durumlarda.

Oyun Uygulamaları (Game Application): Oyunda bazen saniyelik kullanıcı etkileşimleri bile oyunu kaybetmenize neden olabilir, bu yüzden sizin ve karşı oyuncuların etkileşimlerinin sürekli birbirine akması gerekir.

Mesajlaşma Uygulamaları (Chat Application): Whatsapp, Slack, Messager vb uygulamalarda anlık olarak mesajlaştığımız kişinin mesajlarının karışıya ulaşmasını bekleriz.

2. HTTP Request / Response

İki kısımdan oluşur, Request(istek) ve bunun Response (Cevap) tan oluşur.

HTTP Request / Response

Request içerisinde Method, Path, Version Control ve Header kısmından oluşur. Metodları incelersek;

HTTP, belirli bir kaynak üzerinde yapılması istenen eylemi belirten bir dizi istek metodu tanımlamaktadır. HTTP fiilleri olarak da adlandırılır.

  • CONNECT metodu hedefteki kaynak tarafından tanımlanan sunucuya bir tünel oluşturur.
  • OPTIONS metodu hedefteki kaynağın iletişim seçeneklerini anlamak için kullanılır. (CORS olduğunda diğer domain o fiil var mı şeklinde sorar)
  • HEAD metodu GET isteği ile tamamen aynı olan sadece gövdesi olmayan bir yanıt ister.
  • TRACE metodu hedefteki kaynağa giden yol boyunca bir mesaj loop-back testi gerçekleştirir.
  • GET metodu belirtilen kaynağın bir temsilini ister. GET kullanan istekler yalnızca veri almalıdır.
  • POST metodu belirtilen kaynağa bir varlık (entity) göndermek için kullanılır, bu da genellikle sunucuda bir durum değişikliği ya da yan etkilere neden olur.
  • PUT metodu hedefte bulunan kaynağın tüm geçerli temsillerinin yerine istek yükünü (request payload) koyar.
  • DELETE metodu belirtilen kaynağı siler.
  • PATCH metodu bir kaynağa kısmi değişiklikler uygulamak için kullanılır.

Reponse içerisinde gelen Status Code bakarsak;

  • Informational responses (100–199):
  • Successful responses (200–299): 200 OK. …
  • Redirects (300–399): 301 — Permanent Redirect. 302 — Temporary Redirect, …,
  • Client errors (400–499): 404 — Not Found, 410 — Gone, …
  • Server errors (500–599):500 — Internal Server Error, 503 — Service Unavailable,…

2.1 HTTP Header Taşınan Diğer Önemli Veriler

  • Authentication verisi
  • Caching
  • HTTP Cookies
  • CORS (Cross-Origin Resource Sharing)
  • HTTP Headers Group Context
  • HTTP Headers Group Proxies
Headers..

2.2 Mime Type

Gelen verinin hangi türde olduğunu belirtmek için kullanılır. Önemli MimeType türleri ;

  • application/octet-stream: unknown binary file
  • text/plain: unknown textual file
  • text/css :css textual file
  • text/html: html textual file
  • text/js: js textual file

2.3 HTTP için Kullanılan Kütüphaneler

AJAX Request gerçekleştirmemizi sağlayan XMLHttpRequest zamanla daha kolay kullanılabilmesi ve state daha iyi handle edilebilmesi için JQuery.ajax kütüphanesi ve benzer türevleri ortaya çıkmıştır. Sonrasında npm ve node tarafında genelde Request kullanılmaya başlandı. Promise ve then yapı kullanılmalarının artması Axios ve daha sonrasında yeni nesil yeteneklere sahip WebAPI içerisinde gelen Fetch API yayınlandı

HTTP Request Kütüphaneler

Bu HTTPRequest kütüphanelerini karşılaştırdığımızda 3 kütüphane veya API’nin yeteneklerinin birbirine çok yakın olduğunu görebilirsiniz.

Fetch, Axios ve Request

2.2 Fetch API Kullanımı

Get Data

Get (https://googlechrome.github.io/samples/fetch-api/fetch-json.html)

Post Data

Post (https://googlechrome.github.io/samples/fetch-api/fetch-post.html)

3. Websocket Çalışması

Websocket istemci ile sunucu arasında öncelikle bir connection başlatma işlemi olur. (WebSocket Creation)

Bu işlem gerçekleştiğinde yani istemci ve sunucu birbirleri ile handshake gerçekleştirdikleri de artık sunucuya mesaj gönderebiliriz veya sunucudan gelen mesajları dinleyebiliriz (WebSocket Open)

İstemci ve sunucu haberleşmesi (Send Data, Listen Msg)

İşler bittiğinde Web socket bağlantısı sonlandırılır (WebSocket Close)

WebSocket Çalışmaso

3.1 WebSocket Kullanılan Kütüphaneler

WebSocket ile ilgili kullanabileceğimiz bir çok hazır kütüphane bulunuyor. Bundanlar bazılarını aşağıda listeledim;

Websocket Kütüphaneler

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--