SignalR C# (.NET): Komplettleitfaden mit Praxisbeispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

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                    

Empfehlungen