Sobes.tech
Junior — Middle

Pouvez-vous expliquer ce que sont les sockets web et comment ils fonctionnent pour établir une communication bidirectionnelle entre le client et le serveur?

sobes.tech IA

Réponse de l'IA

Les sockets Web sont un protocole qui assure une communication bidirectionnelle (full-duplex) entre le client et le serveur sur une seule connexion TCP.

Comment cela fonctionne :

  1. Le client initie une requête HTTP avec l’en-tête Upgrade: websocket pour passer au protocole WebSocket.
  2. Le serveur confirme la transition en répondant avec l’en-tête approprié.
  3. Après la poignée de main réussie, une connexion persistante est établie, permettant aux deux parties d’envoyer des données à tout moment.

Cela diffère du HTTP classique, où le client envoie une requête et le serveur répond, puis la connexion est fermée. Les sockets Web permettent au serveur d’envoyer des données au client sans requête, ce qui est pratique pour les chats, jeux, temps réel, etc.

Exemple en C# utilisant System.Net.WebSockets :

using System.Net.WebSockets;
using System.Threading;
using System.Text;

// Exemple d’envoi et de réception de messages via WebSocket
ClientWebSocket ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("wss://example.com/socket"), CancellationToken.None);

// Envoi d’un message
string message = "Hello";
byte[] bytes = Encoding.UTF8.GetBytes(message);
await ws.SendAsync(new ArraySegment<byte>(bytes), WebSocketMessageType.Text, true, CancellationToken.None);

// Réception d’un message
var buffer = new byte[1024];
var result = await ws.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
string received = Encoding.UTF8.GetString(buffer, 0, result.Count);