Middle
Was ist SignalR?
sobes.tech KI
Antwort von AI
SignalR ist eine Bibliothek für ASP.NET Core, die es ermöglicht, WebSocket- und Long Polling-Funktionalitäten in Webanwendungen hinzuzufügen, um interaktive Szenarien in Echtzeit zu erstellen.
Sie bietet eine bidirektionale Kommunikation zwischen Server und Client.
Hauptanwendungsfälle:
- Chat-Anwendungen.
- Online-Spiele.
- Echtzeit-Datenaktualisierung (z.B. Diagramme, Benachrichtigungen).
- Überwachung der Benutzeraktivität.
Hauptkomponenten:
- Hubs: Klassen, die eingehende Aufrufe von Clients verarbeiten und Nachrichten an Clients senden.
- Verbindungen: Stellen Client-Verbindungen dar. Sie können über WebSocket, Server-Sent Events oder Long Polling hergestellt werden (je nach Unterstützung durch Client und Server).
Beispiel für die Erstellung eines Hubs:
// MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
public class MyHub : Hub
{
// Methode, die vom Client aufgerufen werden kann
public async Task SendMessage(string user, string message)
{
// Nachricht an alle verbundenen Clients senden
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Konfiguration in Startup.cs:
// In ConfigureServices
services.AddSignalR();
// In Configure
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MyHub>("/myhub"); // Mapping des Hubs auf URL
});
Auf der Clientseite (JavaScript):
// Variante mit npm
// npm install @microsoft/signalr
const hubConnection = new signalR.HubConnectionBuilder()
.withUrl("/myhub") // URL des Hubs
.build();
// Verarbeitung eingehender Nachrichten vom Server
hubConnection.on("ReceiveMessage", (user, message) => {
// Logik zur Verarbeitung der empfangenen Nachricht
console.log(`${user}: ${message}`);
});
// Verbindung öffnen
hubConnection.start()
.then(() => console.log("Verbindung gestartet"))
.catch(err => console.error(err.toString()));
// Nachricht an den Server senden
// hubConnection.invoke("SendMessage", "Client", "Hallo vom Client!");
SignalR wählt automatisch den optimalen Transport basierend auf den Fähigkeiten des Clients und Servers, beginnend mit WebSocket und bei Nichtverfügbarkeit auf ältere Protokolle wechselnd. Dies gewährleistet eine breite Kompatibilität.