Sobes.tech
Junior

Server və müştəri arasında bir neçə əlaqə üsulunu təsvir edin.

sobes.tech Süni İntellekt

AI-dan cavab

Müştəri (brauzer) və server arasında əsas əlaqə üsulları mövcuddur.

  1. HTTP/HTTPS (Polling/Short Polling):

    • Müştəri serverə sorğu göndərir və cavab gözləyir.
    • Server sorğunu işləyir və cavab göndərir.
    • Short Polling-də, müştəri mütəmadi olaraq serverə sorğular göndərərək yeniləmələri yoxlayır.
    • Bu, sadədir, lakin tez-tez yeniləmələr üçün səmərəli deyil, çünki hər sorğunun xərci var.
    // Sadə Short Polling nümunəsi
    function checkUpdates() {
      fetch('/api/updates')
        .then(response => response.json())
        .then(data => {
          // Alınan məlumatların işlənməsi
        })
        .finally(() => {
          setTimeout(checkUpdates, 5000); // Hər 5 saniyədə bir təkrarla
        });
    }
    
    checkUpdates();
    
  2. Long Polling:

    • Müştəri serverə sorğu göndərir, server isə yeni məlumatlar olana qədər və ya vaxt aşımı başa çatana qədər əlaqəni açıq saxlayır.
    • Məlumatlar olduqda, server dərhal cavab göndərir və müştəri yeni sorğu göndərir.
    • Bu, Short Polling-dən daha səmərəlidir, lakin məlumatların alınması ilə növbəti sorğunun göndərilməsi arasında gecikmə var.
  3. WebSockets:

    • Müştəri və server arasında davamlı, iki tərəfli əlaqə yaradır.
    • Əlaqə qurulduqdan sonra, hər iki tərəf istənilən vaxt məlumat göndərə və qəbul edə bilər, əlavə HTTP sorğuları olmadan.
    • Bu, real vaxt tətbiqləri üçün (söhbətlər, onlayn oyunlar, bildirişlər) idealdır.
    const socket = new WebSocket('ws://localhost:8080');
    
    socket.onopen = function(event) {
      console.log('Əlaqə quruldu');
      socket.send('Salam server!');
    };
    
    socket.onmessage = function(event) {
      console.log('Serverdən alınan mesaj:', event.data);
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        console.log(`Əlaqə təmiz şəkildə bağlandı, kod=${event.code}, səbəb=${event.reason}`);
      } else {
        console.error('Əlaqə kəsildi');
      }
    };
    
    socket.onerror = function(error) {
      console.error('WebSocket xətası:', error);
    };
    
  4. Server-Sent Events (SSE):

    • Serverin, HTTP əlaqəsi vasitəsilə məlumatları tək tərəfli göndərməsinə imkan verir.
    • Müştəri serverdən hadisələr axınına abunə olur.
    • Bu, serverin yeniləmələri müştəriyə göndərdiyi hallarda, lakin müştərinin məlumat göndərmədiyi hallarda (məsələn, xəbər axını, tapşırıq irəliləməsi) uyğundur.
    const eventSource = new EventSource('/api/stream');
    
    eventSource.onmessage = function(event) {
      console.log('Serverdən alınan hadisə:', event.data);
    };
    
    eventSource.onerror = function(error) {
      console.error('SSE xətası:', error);
      eventSource.close(); // Xətada əlaqəni bağla
    };
    

Hər bir metodun öz üstünlükləri və çatışmazlıqları var və seçim, tətbiqin yeniləmə tezliyi, məlumat həcmi və iki tərəfli əlaqə ehtiyaclarına əsaslanır.