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.
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.
WebSocket permet une communication persistante, bidirectionnelle, entre les navigateurs et les serveurs sans polling constant.
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.
Une connexion WebSocket démarre par une requête d'upgrade HTTP, puis passe à un protocole de trames binaires persistant.
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.
Le serveur répond avec HTTP 101 Switching Protocols, confirmant l'upgrade. La connexion TCP est maintenant un canal WebSocket.
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.
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;