Bibliothèque WebSocket pour C# (.NET) : SignalR et alternatives

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque WebSocket C# (.NET) : SignalR et outils alternatifs pour le temps réel



Dans le développement web moderne, le besoin de communication bidirectionnelle en temps réel est devenu une norme. Applications de chat, jeux en ligne, plateformes de trading, surveillance de serveurs — tout cela nécessite un transfert de données instantané. Pour le langage C# (.NET), il existe plusieurs bibliothèques puissantes implémentant le protocole WebSocket. Dans cet article, nous allons détailler SignalR — la bibliothèque phare de Microsoft, ainsi que les alternatives : WebSocketSharp et Fleck. Vous apprendrez comment choisir l'outil adapté et comment commencer rapidement.



Qu'est-ce que WebSocket et pourquoi en a-t-on besoin en C#

WebSocket est un protocole qui assure une communication full-duplex entre un client et un serveur via une seule connexion TCP persistante. Contrairement à HTTP, où le client envoie une requête et attend une réponse, WebSocket permet au serveur d'initier l'envoi de données à tout moment. Pour la plateforme .NET, c'est particulièrement important car C# est traditionnellement fort dans le développement serveur, et WebSocket étend ses capacités pour les scénarios temps réel.



SignalR — la solution officielle de Microsoft

SignalR est une bibliothèque pour ASP.NET Core qui abstrait le travail avec WebSocket, en fournissant une API de haut niveau. Elle choisit automatiquement le meilleur transport : WebSocket, Server-Sent Events (SSE) ou Long Polling. SignalR est idéal pour les projets d'entreprise où l'évolutivité et l'intégration avec l'écosystème .NET sont importantes.



Installation de SignalR

dotnet add package Microsoft.AspNetCore.SignalR


Exemple de chat simple avec SignalR

Créons un hub — la classe centrale pour gérer les connexions :

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); }}


Configuration dans Program.cs :

var builder = WebApplication.CreateBuilder(args);builder.Services.AddSignalR();

var app = builder.Build();app.MapHub<ChatHub>("/chat");

app.Run();


Client en JavaScript :

const connection = new signalR.HubConnectionBuilder()    .withUrl("/chat")    .build();

connection.on("ReceiveMessage", (user, message) => { console.log(`${user}: ${message}`);});

connection.start().catch(err => console.error(err));


Avantages de SignalR :

  • Sélection automatique du transport (WebSocket, SSE, Long Polling)
  • Prise en charge des envois groupés et des utilisateurs individuels
  • Gestion intégrée de la reconnexion en cas de rupture
  • Intégration avec l'authentification ASP.NET Core Identity
  • Évolutivité via Redis Backplane ou Azure SignalR Service


Inconvénients :

  • Lourdeur pour les projets simples
  • Dépendance à ASP.NET Core (ne fonctionne pas dans les applications console)
  • Complexité de configuration dans des scénarios non standard


WebSocketSharp — une bibliothèque légère pour .NET Framework et .NET Core

WebSocketSharp est une bibliothèque minimaliste qui implémente le protocole WebSocket sans abstractions superflues. Elle convient à la création de connexions WebSocket côté serveur et côté client. Idéale pour l'intégration dans des applications console ou des jeux Unity.



Installation via NuGet

dotnet add package WebSocketSharp


Exemple de serveur WebSocket

using WebSocketSharp;using WebSocketSharp.Server;

public class Echo : WebSocketBehavior{ protected override void OnMessage(MessageEventArgs e) { Send($"Écho : {e.Data}"); }}

class Program{ static void Main() { va

Recommendations