Junior
Descrieți câteva modalități de comunicare între server și client.
sobes.tech AI
Răspuns de la AI
Există mai multe metode principale de comunicare între client (browser) și server.
-
HTTP/HTTPS (Polling/Short Polling):
- Clientul trimite o solicitare către server și așteaptă un răspuns.
- Serverul procesează solicitarea și trimite răspunsul.
- În cazul Short Polling, clientul trimite periodic solicitări către server pentru a verifica dacă există actualizări.
- Este simplu de implementat, dar ineficient pentru actualizări frecvente din cauza costurilor fiecărei solicitări.
// Exemplu de Short Polling simplu function checkUpdates() { fetch('/api/updates') .then(response => response.json()) .then(data => { // Procesarea datelor primite }) .finally(() => { setTimeout(checkUpdates, 5000); // Repetă la fiecare 5 secunde }); } checkUpdates(); -
Long Polling:
- Clientul trimite o solicitare către server, care menține conexiunea deschisă până când apar date noi sau expiră timeout-ul.
- Când apar date, serverul trimite răspunsul imediat, apoi clientul trimite o nouă solicitare.
- Este mai eficient decât Short Polling, dar există întârziere între primirea datelor și trimiterea următoarei solicitări.
-
WebSockets:
- Creează o conexiune bidirecțională persistentă între client și server.
- După stabilirea conexiunii, ambele părți pot trimite și primi date în orice moment fără solicitări HTTP suplimentare.
- Sunt ideale pentru aplicații în timp real (chat-uri, jocuri online, notificări).
const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function(event) { console.log('Conexiune stabilită'); socket.send('Salut server!'); }; socket.onmessage = function(event) { console.log('Mesaj primit de la server:', event.data); }; socket.onclose = function(event) { if (event.wasClean) { console.log(`Conexiune închisă curat, cod=${event.code}, motiv=${event.reason}`); } else { console.error('Conexiune întreruptă'); } }; socket.onerror = function(error) { console.error('Eroare WebSocket:', error); }; -
Server-Sent Events (SSE):
- Permite serverului să trimită date către client într-o singură direcție printr-o conexiune HTTP.
- Clientul se abonează la un flux de evenimente de la server.
- Sunt potrivite pentru cazurile în care serverul trimite actualizări către client, dar clientul nu trimite date înapoi (de exemplu, flux de știri, progresul unei sarcini).
const eventSource = new EventSource('/api/stream'); eventSource.onmessage = function(event) { console.log('Eveniment primit de la server:', event.data); }; eventSource.onerror = function(error) { console.error('Eroare SSE:', error); eventSource.close(); // Închide conexiunea în caz de eroare };
Fiecare metodă are avantajele și dezavantajele sale, iar alegerea depinde de cerințele specifice ale aplicației în ceea ce privește frecvența actualizărilor, volumul de date și necesitatea comunicării bidirecționale.