Sobes.tech
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.