Was ist WebSocket?

WebSocket ist eine Web-Technologie, die bidirektionale Vollduplex-Kommunikationskanäle über einen einzigen TCP-Socket bereitstellt, standardisiert von der IETF als RFC 6455.

Echtzeit-Kommunikation

WebSocket ermöglicht eine persistente, bidirektionale Kommunikation zwischen Browsern und Servern ohne ständiges Polling.

Mehr als HTTP-Request-Response

Klassisches HTTP folgt einem Request-Response-Muster, bei dem der Client jeden Austausch initiieren muss. WebSocket stuft eine HTTP-Verbindung zu einem persistenten Vollduplex-Kanal hoch, in dem Client und Server jederzeit Daten senden können. Das beseitigt den Overhead wiederholter HTTP-Handshakes und ermöglicht echte Echtzeit-Interaktionen wie Live-Feeds, Online-Gaming, kollaboratives Editieren und Finanz-Ticker.

  • Bidirektional: Client und Server können Daten pushen
  • Persistente Verbindung reduziert Latenz und Overhead
  • Arbeitet über Standard-TCP-Port 80/443 und passiert Firewalls
  • Standardisiert als RFC 6455 durch die IETF
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

Der WebSocket-Handshake

Eine WebSocket-Verbindung beginnt als HTTP-Upgrade-Anfrage und wechselt dann zu einem persistenten binären Frame-Protokoll.

1. HTTP-Upgrade-Anfrage

Der Client sendet eine HTTP-GET-Anfrage mit den Headern Upgrade: websocket und Connection: Upgrade sowie einem zufälligen Sec-WebSocket-Key.

2. Server akzeptiert

Der Server antwortet mit HTTP 101 Switching Protocols und bestätigt das Upgrade. Die TCP-Verbindung ist nun ein WebSocket-Kanal.

3. Vollduplex-Messaging

Beide Seiten senden frei Text- oder Binär-Frames mit minimalem 2-Byte-Overhead. Die Verbindung bleibt offen, bis eine Seite sie schließt.

Delphi-WebSocket-Beispiel

Mit wenigen Codezeilen verbindest du dich mit einem WebSocket-Server und tauschst Nachrichten aus.

uses
  sgcWebSocket_Client, sgcWebSocket_Types;

var
  WSClient: TsgcWebSocketClient;

procedure TForm1.FormCreate(Sender: TObject);
begin
  WSClient := TsgcWebSocketClient.Create(nil);
  WSClient.Host := 'echo.websocket.org';
  WSClient.Port := 443;
  WSClient.TLS := True;
  WSClient.OnMessage := OnMessage;
  WSClient.Active := True;
end;

procedure TForm1.OnMessage(Connection: TsgcWSConnection;
  const aText: string);
begin
  // Handle incoming messages
  Memo1.Lines.Add('Received: ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Send a text message to the server
  WSClient.WriteData('Hello, WebSocket!');
end;

Bereit, Echtzeit-Anwendungen zu bauen?

Lade sgcWebSockets herunter und füge deinen Delphi-, C++ Builder- oder .NET-Projekten heute WebSocket-Unterstützung hinzu.