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.