Sobes.tech
Junior

Pentru ce sunt folosite socket-urile în dezvoltarea web?

sobes.tech AI

Răspuns de la AI

Pentru schimbul bidirecțional de date între client (browser) și server în timp real. Spre deosebire de HTTP-ul tradițional, unde clientul inițiază solicitarea, iar serverul răspunde, socket-urile permit serverului să trimită date către client în orice moment fără o solicitare prealabilă.

Exemple de utilizare:

  • Aplicații de chat: Livrare instantanee a mesajelor între utilizatori.
  • Jocuri online: Sincronizarea stării jucătorilor și a lumii jocului în timp real.
  • Platforme de tranzacționare: Actualizarea cotelor acțiunilor sau criptomonedelor fără reîncărcarea paginii.
  • Notificări: Trimiterea de notificări push utilizatorilor atunci când se schimbă starea comenzii, apare un mesaj nou etc.
  • Editare colaborativă de documente: Sincronizarea modificărilor între mai mulți utilizatori.

Socket-urile sunt implementate peste protocolul TCP și utilizează de obicei protocolul WebSocket, care asigură o conexiune constantă între client și server după handshake-ul HTTP inițial.

// Exemplu de cod client pentru stabilirea unei conexiuni WebSocket
const ws = new WebSocket('ws://localhost:8080'); // Adresa serverului WebSocket

ws.onopen = () => {
  // Conexiune stabilită
  console.log('Conexiune WebSocket stabilită');
  ws.send('Salut, server!'); // Trimitere mesaj către server
};

ws.onmessage = (event) => {
  // Mesaj primit de la server
  console.log('Mesaj de la server:', event.data);
};

ws.onclose = (event) => {
  // Conexiune închisă
  if (event.wasClean) {
    console.log(`Conexiune închisă curat, cod=${event.code} motiv=${event.reason}`);
  } else {
    console.error('Conexiune întreruptă');
  }
};

ws.onerror = (error) => {
  // Eroare la lucrul cu conexiunea
  console.error('Eroare WebSocket:', error);
};

Conexiunea WebSocket are costuri de overhead scăzute comparativ cu solicitările HTTP constante (polling sau long polling), ceea ce o face mai eficientă pentru aplicațiile care necesită schimb de date frecvent în timp real.