Sobes.tech
Junior

Якшӣ роҳҳои алоқа байни сервер ва мизоҷро тавсиф кунед.

sobes.tech AI

Ҷавоб аз AI

Ҳамчун роҳҳои асосии иртибот байни мизоҷ (браузер) ва сервер чандин роҳҳои асосӣ мавҷуданд.

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

    • Мизоҷ дархостро ба сервер мефиристад ва интизор мешавад, ки ҷавоб бигирад.
    • Сервер дархостро коркард мекунад ва ҷавоб мефиристад.
    • Дар Short Polling, мизоҷ ба таври давомдор дархостҳоро ба сервер мефиристад, то навигардониҳоро санҷад.
    • Ин содда аст дар иҷро, аммо барои навигардониҳои зуд-зуд самаранок нест, бо сабаби хароҷоти ҳар дархост.
    // Намунаи простии Short Polling
    function checkUpdates() {
      fetch('/api/updates')
        .then(response => response.json())
        .then(data => {
          // Коркарди маълумоти гирифташуда
        })
        .finally(() => {
          setTimeout(checkUpdates, 5000); // Такрор дар 5 сония
        });
    }
    
    checkUpdates();
    
  2. Long Polling:

    • Мизоҷ дархостро ба сервер мефиристад, ки онро боз медорад, то вақте ки маълумоти нав пайдо шавад ё вақти тамом шавад.
    • Вақте ки маълумот пайдо мешавад, сервер фавран ҷавоб мефиристад, ва мизоҷ дархост нав месозад.
    • Ин самараноктар аст аз Short Polling, аммо ҳанӯз ҳам дар байни гирифтани маълумот ва фиристодани дархости нав дер мешавад.
  3. WebSockets:

    • Воҳидсозии пайвасти доимӣ ва дуҷониба байни мизоҷ ва сервер.
    • Пас аз барқарор кардани пайвастӣ, ҳар ду тараф метавонанд дар ҳар вақт маълумот фиристанд ва қабул кунанд, бе ниёз ба дархостҳои HTTP иловагӣ.
    • Идеалӣ барои барномаҳои вақти воқеӣ (чатҳо, бозии онлайн, огоҳиномаҳо).
    const socket = new WebSocket('ws://localhost:8080');
    
    socket.onopen = function(event) {
      console.log('Пайвастӣ барқарор шуд');
      socket.send('Салом сервер!');
    };
    
    socket.onmessage = function(event) {
      console.log('Паёми аз сервер гирифта шуд:', event.data);
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        console.log(`Пайвастӣ тоза баста шуд, код=${event.code}, сабаб=${event.reason}`);
      } else {
        console.error('Пайвастӣ қатъ шуд');
      }
    };
    
    socket.onerror = function(error) {
      console.error('Хатои WebSocket:', error);
    };
    
  4. Server-Sent Events (SSE):

    • Имкон медиҳад, ки сервер маълумотро ба мизоҷ дар якҷоягӣ бо HTTP ирсол кунад.
    • Мизоҷ ба ҷараёни ҳодисаҳо аз сервер обуна мешавад.
    • Ин барои ҳолатҳое мувофиқ аст, ки сервер навигардониҳоро ба мизоҷ мефиристад, аммо мизоҷ маълумотро ба сервер намефиристад (масалан, ҷараёни хабарҳо, намоиши пешрафти вазифа).
    const eventSource = new EventSource('/api/stream');
    
    eventSource.onmessage = function(event) {
      console.log('Ҳодиса аз сервер гирифта шуд:', event.data);
    };
    
    eventSource.onerror = function(error) {
      console.error('Хатои SSE:', error);
      eventSource.close(); // Баста кардани пайвастӣ дар ҳолати хато
    };
    

Ҳар як усул дорои афзалиятҳо ва нуқсонҳо аст, ва интихоби он вобаста ба талаботи барнома дар бораи зуд-зуд будани навигардониҳо, ҳаҷми маълумот ва ниёз ба иртиботи дуҷониба мебошад.