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.
-
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(); -
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.
-
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); }; -
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.