Sobes.tech
Junior

K čemu slouží sockety ve webovém vývoji?

sobes.tech AI

Odpověď od AI

Pro obousměrný přenos dat mezi klientem (prohlížečem) a serverem v reálném čase. Na rozdíl od tradičního HTTP, kde klient iniciuje požadavek a server odpovídá, umožňují sockety serveru posílat data klientovi kdykoli bez předchozího požadavku.

Příklady použití:

  • Chatové aplikace: Okamžité doručení zpráv mezi uživateli.
  • Online hry: Synchronizace stavů hráčů a herního světa v reálném čase.
  • Obchodní platformy: Aktualizace kurzů akcií nebo kryptoměn bez obnovení stránky.
  • Upozornění: Odesílání push oznámení uživatelům při změně stavu objednávky, nová zpráva atd.
  • Společná úprava dokumentů: Synchronizace změn mezi více uživateli.

Sockety jsou implementovány nad protokolem TCP a obvykle používají protokol WebSocket, který zajišťuje stálé spojení mezi klientem a serverem po počátečním handshake HTTP.

// Příklad klientského kódu pro navázání spojení WebSocket
const ws = new WebSocket('ws://localhost:8080'); // Adresa WebSocket serveru

ws.onopen = () => {
  // Spojení navázáno
  console.log('Spojení WebSocket navázáno');
  ws.send('Ahoj, server!'); // Odeslání zprávy serveru
};

ws.onmessage = (event) => {
  // Přijata zpráva od serveru
  console.log('Zpráva od serveru:', event.data);
};

ws.onclose = (event) => {
  // Spojení ukončeno
  if (event.wasClean) {
    console.log(`Spojení ukončeno čistě, kód=${event.code} důvod=${event.reason}`);
  } else {
    console.error('Spojení přerušeno');
  }
};

ws.onerror = (error) => {
  // Chyba při práci se spojení
  console.error('Chyba WebSocket:', error);
};

Spojení WebSocket má nízké náklady na overhead ve srovnání s neustálými HTTP požadavky (polling nebo long polling), což ho činí efektivnější pro aplikace vyžadující častou výměnu dat v reálném čase.