Sobes.tech
Junior

Server va mijoz o'rtasida bir nechta aloqa usullarini tavsiflang.

sobes.tech AI

AIdan javob

Mijozlar (brauzer) va server o'rtasida asosiy aloqa usullari mavjud.

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

    • Mijoz serverga so'rov yuboradi va javob kutadi.
    • Server so'rovni ishlaydi va javob yuboradi.
    • Short Pollingda, mijoz muntazam ravishda serverga so'rov yuborib, yangilanishlarni tekshiradi.
    • Bu oddiy amalga oshirish, ammo tez-tez yangilanishlar uchun samarali emas, chunki har bir so'rov uchun xarajatlar bor.
    // Oddiy Short Polling misoli
    function checkUpdates() {
      fetch('/api/updates')
        .then(response => response.json())
        .then(data => {
          // Olingan ma'lumotlarni qayta ishlash
        })
        .finally(() => {
          setTimeout(checkUpdates, 5000); // 5 sekunddan keyin takrorlash
        });
    }
    
    checkUpdates();
    
  2. Long Polling:

    • Mijoz serverga so'rov yuboradi, server esa yangi ma'lumotlar bo'lsa yoki timeout o'tgan bo'lsa, ularga javob yuboradi.
    • Ma'lumotlar bo'lsa, server darhol javob yuboradi, so'ngra mijoz yangi so'rov yuboradi.
    • Bu Short Pollingdan samaraliroq, ammo ma'lumotlarni qabul qilish va keyingi so'rov yuborish orasida kechikishlar mavjud.
  3. WebSockets:

    • Mijoz va server o'rtasida doimiy, ikki tomonlama bog'lanishni yaratadi.
    • Bog'lanish o'rnatilgandan so'ng, har ikkala tomon ham istalgan vaqtda ma'lumot yuborishi va olishi mumkin, qo'shimcha HTTP so'rovlarisiz.
    • Bu real vaqtli ilovalar uchun (chatlar, onlayn o'yinlar, bildirishnomalar) ideal.
    const socket = new WebSocket('ws://localhost:8080');
    
    socket.onopen = function(event) {
      console.log('Bog'lanish o'rnatildi');
      socket.send('Salom server!');
    };
    
    socket.onmessage = function(event) {
      console.log('Serverdan xabar:', event.data);
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        console.log(`Toza yopildi, kod=${event.code}, sabab=${event.reason}`);
      } else {
        console.error('Bog'lanish uzildi');
      }
    };
    
    socket.onerror = function(error) {
      console.error('WebSocket xatosi:', error);
    };
    
  4. Server-Sent Events (SSE):

    • Serverga klientga ma'lumot yuborishga imkon beradi, HTTP aloqasi orqali.
    • Klient serverdan voqealar oqimiga yoziladi.
    • Bu server klientga yangilanishlarni yuborganida, lekin klient javobda ma'lumot yubirmasligi kerak bo'lsa (masalan, yangiliklar oqimi, vazifa progressi) uchun mos keladi.
    const eventSource = new EventSource('/api/stream');
    
    eventSource.onmessage = function(event) {
      console.log('Serverdan olayotgan voqea:', event.data);
    };
    
    eventSource.onerror = function(error) {
      console.error('SSE xatosi:', error);
      eventSource.close(); // Xato bo'lsa, bog'lanishni yopish
    };
    

Har bir usulning o'z afzalliklari va kamchiliklari bor, va tanlov ilovaning yangilanish chastotasi, ma'lumot hajmi va ikki tomonlama aloqa ehtiyojlariga qarab amalga oshiriladi.