Qu'est-ce que les WebSockets ?

WebSocket est une technologie web qui fournit des canaux de communication bidirectionnels, full-duplex, sur un seul socket TCP, standardisée par l'IETF dans le RFC 6455.

Communication en temps réel

WebSocket permet une communication persistante, bidirectionnelle, entre les navigateurs et les serveurs sans polling constant.

Au-delà de la requête-réponse HTTP

HTTP traditionnel suit un modèle requête-réponse où le client doit initier chaque échange. WebSocket fait évoluer une connexion HTTP en un canal persistant, full-duplex, où le client et le serveur peuvent tous deux envoyer des données à tout moment. Cela élimine le surcoût des poignées de main HTTP répétées et permet de véritables interactions en temps réel comme les flux en direct, les jeux en ligne, l'édition collaborative et les tickers financiers.

  • Bidirectionnel : le client et le serveur peuvent tous deux pousser des données
  • La connexion persistante réduit la latence et le surcoût
  • Fonctionne sur les ports TCP standard 80/443, en traversant les firewalls
  • Standardisé sous le RFC 6455 par l'IETF
CLIENT SERVER Full-Duplex ws:// or wss:// RFC 6455

La poignée de main WebSocket

Une connexion WebSocket démarre par une requête d'upgrade HTTP, puis passe à un protocole de trames binaires persistant.

1. Requête d'upgrade HTTP

Le client envoie une requête HTTP GET avec les en-têtes Upgrade: websocket et Connection: Upgrade, accompagnée d'une Sec-WebSocket-Key aléatoire.

2. Le serveur accepte

Le serveur répond avec HTTP 101 Switching Protocols, confirmant l'upgrade. La connexion TCP est maintenant un canal WebSocket.

3. Messagerie full-duplex

Les deux côtés envoient librement des trames texte ou binaires avec un surcoût minimal de 2 octets. La connexion reste ouverte jusqu'à ce qu'un côté la ferme.

Exemple WebSocket en Delphi

Connecte-toi à un serveur WebSocket et échange des messages en quelques lignes de code.

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
  // Gérer les messages entrants
  Memo1.Lines.Add('Reçu : ' + aText);
end;

procedure TForm1.ButtonSendClick(Sender: TObject);
begin
  // Envoyer un message texte au serveur
  WSClient.WriteData('Bonjour, WebSocket !');
end;

Prêt à créer des applications en temps réel ?

Télécharge sgcWebSockets et ajoute le support WebSocket à tes projets Delphi, C++ Builder ou .NET dès aujourd'hui.