Middle
Qu'est-ce que SignalR?
sobes.tech IA
Réponse de l'IA
SignalR est une bibliothèque pour ASP.NET Core qui permet d’ajouter des fonctionnalités WebSocket et Long Polling dans des applications web pour créer des scénarios interactifs en temps réel.
Elle assure une communication bidirectionnelle entre le serveur et le client.
Les principaux cas d’utilisation :
- Applications de chat.
- Jeux en ligne.
- Mise à jour des données en temps réel (par exemple, graphiques, notifications).
- Surveillance de l’activité des utilisateurs.
Composants principaux :
- Hubs : Classes qui gèrent les appels entrants des clients et envoient des messages aux clients.
- Connexions : Représentent les connexions des clients. Elles peuvent être établies via WebSocket, Server-Sent Events ou Long Polling (en fonction du support du client et du serveur).
Exemple de création d’un hub :
// MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
public class MyHub : Hub
{
// Méthode pouvant être appelée par le client
public async Task SendMessage(string user, string message)
{
// Envoyer un message à tous les clients connectés
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Configuration dans Startup.cs :
// Dans ConfigureServices
services.AddSignalR();
// Dans Configure
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MyHub>("/myhub"); // Mapping du hub à l’URL
});
Côté client (JavaScript) :
// Option avec npm
// npm install @microsoft/signalr
const hubConnection = new signalR.HubConnectionBuilder()
.withUrl("/myhub") // URL du hub
.build();
// Traitement des messages entrants du serveur
hubConnection.on("ReceiveMessage", (user, message) => {
// Logique de traitement du message reçu
console.log(`${user}: ${message}`);
});
// Ouverture de la connexion
hubConnection.start()
.then(() => console.log("Connexion démarrée"))
.catch(err => console.error(err.toString()));
// Envoi d’un message au serveur
// hubConnection.invoke("SendMessage", "Client", "Bonjour du client!");
SignalR choisit automatiquement le transport optimal en fonction des capacités du client et du serveur, en commençant par WebSocket et en passant à des protocoles plus anciens si nécessaire. Cela garantit une compatibilité étendue.