Junior
Do czego służą gniazda w tworzeniu stron internetowych?
sobes.tech AI
Odpowiedź od AI
Do dwukierunkowej wymiany danych między klientem (przeglądarką) a serwerem w czasie rzeczywistym. W przeciwieństwie do tradycyjnego HTTP, gdzie klient inicjuje żądanie, a serwer odpowiada, gniazda umożliwiają serwerowi wysyłanie danych do klienta w dowolnym momencie bez wcześniejszego żądania.
Przykłady zastosowania:
- Aplikacje czatu: Natychmiastowa dostawa wiadomości między użytkownikami.
- Gry online: Synchronizacja stanów graczy i świata gry w czasie rzeczywistym.
- Platformy handlowe: Aktualizacja notowań akcji lub kryptowalut bez odświeżania strony.
- Powiadomienia: Wysyłanie powiadomień push do użytkowników przy zmianie statusu zamówienia, nowej wiadomości itp.
- Wspólna edycja dokumentów: Synchronizacja zmian między wieloma użytkownikami.
Gniazda są implementowane na protokole TCP i zazwyczaj korzystają z protokołu WebSocket, który zapewnia stałe połączenie między klientem a serwerem po początkowym uścisku dłoni HTTP.
// Przykład kodu klienta do ustanowienia połączenia WebSocket
const ws = new WebSocket('ws://localhost:8080'); // Adres serwera WebSocket
ws.onopen = () => {
// Połączenie nawiązane
console.log('Połączenie WebSocket nawiązane');
ws.send('Cześć, serwer!'); // Wysyłanie wiadomości do serwera
};
ws.onmessage = (event) => {
// Odebrano wiadomość od serwera
console.log('Odebrano wiadomość od serwera:', event.data);
};
ws.onclose = (event) => {
// Połączenie zamknięte
if (event.wasClean) {
console.log(`Połączenie zamknięte czysto, kod=${event.code} powód=${event.reason}`);
} else {
console.error('Połączenie przerwane');
}
};
ws.onerror = (error) => {
// Błąd przy pracy z połączeniem
console.error('Błąd WebSocket:', error);
};
Połączenie WebSocket ma niskie koszty narzutu w porównaniu do stałych żądań HTTP (polling lub long polling), co czyni je bardziej wydajnym dla aplikacji wymagających częstej wymiany danych w czasie rzeczywistym.