Sobes.tech
Junior

Wozu werden Sockets in der Webentwicklung verwendet?

sobes.tech KI

Antwort von AI

Für den bidirektionalen Datenaustausch zwischen Client (Browser) und Server in Echtzeit. Im Gegensatz zum traditionellen HTTP, bei dem der Client die Anfrage initiiert und der Server antwortet, ermöglichen Sockets dem Server, Daten jederzeit an den Client zu senden, ohne eine vorherige Anfrage.

Anwendungsbeispiele:

  • Chat-Anwendungen: Sofortige Zustellung von Nachrichten zwischen Benutzern.
  • Online-Spiele: Synchronisierung des Zustands der Spieler und der Spielwelt in Echtzeit.
  • Trading-Plattformen: Aktualisierung von Aktien- oder Kryptowährungskursen ohne Seitenneuladen.
  • Benachrichtigungen: Versand von Push-Benachrichtigungen an Benutzer bei Statusänderungen von Bestellungen, neuen Nachrichten usw.
  • Gemeinsame Dokumentenbearbeitung: Synchronisierung von Änderungen zwischen mehreren Benutzern.

Sockets werden über das TCP-Protokoll implementiert und verwenden in der Regel das WebSocket-Protokoll, das eine dauerhafte Verbindung zwischen Client und Server nach dem initialen HTTP-Handshake gewährleistet.

// Beispiel für Client-Code zum Einrichten einer WebSocket-Verbindung
const ws = new WebSocket('ws://localhost:8080'); // Adresse des WebSocket-Servers

ws.onopen = () => {
  // Verbindung hergestellt
  console.log('WebSocket-Verbindung hergestellt');
  ws.send('Hallo, Server!'); // Nachricht an den Server senden
};

ws.onmessage = (event) => {
  // Nachricht vom Server empfangen
  console.log('Nachricht vom Server:', event.data);
};

ws.onclose = (event) => {
  // Verbindung geschlossen
  if (event.wasClean) {
    console.log(`Verbindung sauber geschlossen, Code=${event.code} Grund=${event.reason}`);
  } else {
    console.error('Verbindung unterbrochen');
  }
};

ws.onerror = (error) => {
  // Fehler bei der Arbeit mit der Verbindung
  console.error('WebSocket-Fehler:', error);
};

Die WebSocket-Verbindung hat im Vergleich zu ständigen HTTP-Anfragen (Polling oder Long Polling) geringe Overhead-Kosten, was sie für Anwendungen, die einen häufigen Datenaustausch in Echtzeit erfordern, effizienter macht.