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.
WebSocket ist eine Web-Technologie, die bidirektionale Vollduplex-Kommunikationskanäle über einen einzigen TCP-Socket bereitstellt, standardisiert von der IETF als RFC 6455.
WebSocket ermöglicht eine persistente, bidirektionale Kommunikation zwischen Browsern und Servern ohne ständiges Polling.
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.
Eine WebSocket-Verbindung beginnt als HTTP-Upgrade-Anfrage und wechselt dann zu einem persistenten binären Frame-Protokoll.
Der Client sendet eine HTTP-GET-Anfrage mit den Headern Upgrade: websocket und Connection: Upgrade sowie einem zufälligen Sec-WebSocket-Key.
Der Server antwortet mit HTTP 101 Switching Protocols und bestätigt das Upgrade. Die TCP-Verbindung ist nun ein WebSocket-Kanal.
Beide Seiten senden frei Text- oder Binär-Frames mit minimalem 2-Byte-Overhead. Die Verbindung bleibt offen, bis eine Seite sie schließt.
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;