Was ist SignalR und warum braucht man es?
SignalR ist eine Bibliothek für ASP.NET Core, die das Hinzufügen von Echtzeit-Funktionen (Real-Time) in Webanwendungen vereinfacht. Sie ermöglicht es dem Server, verbundenen Clients (Browser, mobile Apps, Desktop-Anwendungen) sofort Daten zu senden, ohne dass der Client ständig Anfragen stellen muss.
Warum ist das nötig? Das traditionelle HTTP-Protokoll arbeitet nach dem „Anfrage-Antwort“-Prinzip: Der Client sendet eine Anfrage, der Server antwortet. Um Updates zu erhalten, müsste der Client den Server ständig abfragen (Polling). Das ist ineffizient und verursacht Verzögerungen. SignalR löst dieses Problem, indem es eine dauerhafte, bidirektionale Verbindung bereitstellt.
Hauptanwendungsfälle:
- Chats und Messenger (sofortige Nachrichtenübermittlung)
- Monitoring-Panels und Dashboards (Live-Updates von Wechselkursen, Aktienkursen)
- Gemeinsame Dokumentenbearbeitung (wie Google Docs)
- Echtzeit-Benachrichtigungen (neue Bestellungen, Alarme)
- Multiplayer-Spiele
- Fortschrittsanzeige bei langlaufenden Vorgängen (Datei-Uploads, Datenverarbeitung)
SignalR wählt automatisch das beste Transportprotokoll für die Verbindung aus:
- WebSocket – am effizientesten, dauerhafte bidirektionale Verbindung
- Server-Sent Events (SSE) – unidirektionale Übertragung vom Server zum Client
- Long Polling – Fallback-Mechanismus, falls WebSocket und SSE nicht verfügbar sind
SignalR installieren
Installation auf dem Server (ASP.NET Core)
Für die Serverseite wird das NuGet-Paket verwendet. Führen Sie im Terminal aus:
dotnet add package Microsoft.AspNetCore.SignalR
Oder über die Package Manager Console in Visual Studio:
Install-Package Microsoft.AspNetCore.SignalR
Installation des JavaScript-Clients (Browser)
Für die Clientseite (Browser) verwenden Sie npm:
npm install @microsoft/signalr
Oder binden Sie es über CDN ein:
<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.0/signalr.min.js"></script>
Installation des .NET-Clients (C#)
Für einen C#-Client (z. B. Konsolenanwendung oder WPF):
dotnet add package Microsoft.AspNetCore.SignalR.Client
Schnellstart: Beispiel "Hello, World!"
Wir erstellen einen einfachen Chat: Der Server empfängt eine Nachricht und sendet sie an alle verbundenen Clients.
Schritt 1: Hub erstellen (Serverseite)
Erstellen Sie die Datei ChatHub.cs:
using Microsoft.AspNetCore.SignalR;
namespace SignalRChat.Hubs
{
public class ChatHub : Hub
{
public async Task SendMessage(string user, string message)
{
// Sende die Nachricht an alle verbundenen Clients
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
}
Schritt 2: SignalR in Program.cs registrieren
using SignalRChat.Hubs;
var builder = WebApplication.CreateBuilder(args);
// SignalR hinzufügen
builder.Services.AddSignalR();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
// Hub auf den Pfad /chatHub mappen
app.MapHub<ChatHub>("/chatHub");
app.Run();
Schritt 3: Client erstellen (HTML + JavaScript)
<!DOCTYPE html>
<html>
<head>
<title>SignalR Chat</title>
</head>
<body>
<h2>SignalR Chat</h2>
<div>
<input type="text" id="userInput" placeholder="Ihr Name" />
<input type="text" id="messageInput" placeholder="Nachricht" />
<button onclick="sendMessage()">Senden</button>
</div>
<ul id="messagesList"></ul>
<script src="https://cdnjs.cloudflare.com/aja Auch in der Bibliothek
pybind11 für C++: Vollständiges Tutorial mit Beispielen
Event Bus und Observer-Pattern in C++: Implementierung mit modernem C++
Kryptografie in TypeScript: Überblick über die Bibliothek crypto-js
Arbeit mit XML in Swift (iOS/macOS): Foundation und SwiftXML