Sobes.tech
Junior

Sunucu ve istemci arasında birkaç iletişim yöntemi açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

İstemci (tarayıcı) ile sunucu arasında birkaç temel iletişim yöntemi vardır.

  1. HTTP/HTTPS (Polling/Kısa Polling):

    • İstemci, sunucuya bir istek gönderir ve yanıt bekler.
    • Sunucu isteği işler ve yanıtı gönderir.
    • Kısa Polling'de, istemci düzenli olarak sunucuya istek göndererek güncellemeleri kontrol eder.
    • Uygulaması basittir, ancak sık güncellemeler için verimsizdir çünkü her istek maliyetlidir.
    // Basit bir Kısa Polling örneği
    function checkUpdates() {
      fetch('/api/updates')
        .then(response => response.json())
        .then(data => {
          // Alınan verilerin işlenmesi
        })
        .finally(() => {
          setTimeout(checkUpdates, 5000); // 5 saniye sonra tekrar
        });
    }
    
    checkUpdates();
    
  2. Long Polling:

    • İstemci, sunucuya bir istek gönderir, sunucu yeni veri olana kadar veya zaman aşımı gerçekleşene kadar bağlantıyı açık tutar.
    • Veri geldiğinde, sunucu hemen yanıtı gönderir ve ardından istemci yeni bir istek gönderir.
    • Kısa Polling'den daha etkilidir, ancak veri alımı ile sonraki isteğin gönderimi arasında gecikme vardır.
  3. WebSockets:

    • İstemci ile sunucu arasında kalıcı, çift yönlü bir bağlantı kurar.
    • Bağlantı kurulduktan sonra, her iki taraf da herhangi bir zamanda veri gönderebilir ve alabilir, ek HTTP istekleri gerekmez.
    • Gerçek zamanlı uygulamalar (sohbetler, çevrimiçi oyunlar, bildirimler) için idealdir.
    const socket = new WebSocket('ws://localhost:8080');
    
    socket.onopen = function(event) {
      console.log('Bağlantı kuruldu');
      socket.send('Sunucuya merhaba!');
    };
    
    socket.onmessage = function(event) {
      console.log('Sunucudan mesaj alındı:', event.data);
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        console.log(`Temiz kapanış, kod=${event.code}, neden=${event.reason}`);
      } else {
        console.error('Bağlantı kesildi');
      }
    };
    
    socket.onerror = function(error) {
      console.error('WebSocket hatası:', error);
    };
    
  4. Server-Sent Events (SSE):

    • Sunucunun, HTTP bağlantısı üzerinden tek taraflı olarak veri göndermesine olanak tanır.
    • İstemci, sunucudan gelen olay akışına abone olur.
    • Sunucu, güncellemeleri istemciye göndermesi gereken durumlar için uygundur, ancak istemci geri veri göndermediğinde (örneğin, haber akışı, görev ilerlemesi) kullanılır.
    const eventSource = new EventSource('/api/stream');
    
    eventSource.onmessage = function(event) {
      console.log('Sunucudan gelen olay:', event.data);
    };
    
    eventSource.onerror = function(error) {
      console.error('SSE hatası:', error);
      eventSource.close(); // Hata durumunda bağlantıyı kapat
    };
    

Her yöntemin avantajları ve dezavantajları vardır ve seçim, uygulamanın güncelleme sıklığı, veri hacmi ve çift yönlü iletişim ihtiyacına göre yapılır.