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.SignalRExemple 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 WebSocketSharpExemple 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 Aussi dans la bibliothèque
Surveillance des applications Java : bibliothèque Micrometer et intégration avec Prometheus
Client OAuth pour Kotlin : bibliothèque Ktor OAuth pour l'authentification dans les API
mimalloc pour C++ : guide complet avec exemples
Frameworks CLI pour Java : aperçu et comparaison des meilleurs outils