Middle
Mi az a SignalR?
sobes.tech MI
Válasz az MI-től
A SignalR egy könyvtár az ASP.NET Core-hoz, amely lehetővé teszi a WebSocket és Long Polling funkciók hozzáadását a webalkalmazásokhoz, és valós idejű interaktív forgatókönyvek létrehozását.
Kétirányú kommunikációt biztosít a szerver és a kliens között.
Fő felhasználási esetek:
- Csevegőalkalmazások.
- Online játékok.
- Adatok valós idejű frissítése (pl. diagramok, értesítések).
- Felhasználói aktivitás monitorozása.
Fő összetevők:
- Hub-ok: Osztályok, amelyek kezelik a bejövő hívásokat a kliensektől, és üzeneteket küldenek a klienseknek.
- Kapcsolatok: A kliens kapcsolatait reprezentálják. WebSocket, Server-Sent Events vagy Long Polling segítségével hozhatók létre (a kliens és a szerver támogatásától függően).
Hub létrehozásának példája:
// MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
public class MyHub : Hub
{
// Metódus, amit a kliens hívhat
public async Task SendMessage(string user, string message)
{
// Üzenet küldése minden csatlakozott kliensnek
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Konfiguráció a Startup.cs-ben:
// ConfigureServices-ben
services.AddSignalR();
// Configure-ben
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MyHub>("/myhub"); // Hub URL-hez való hozzárendelése
});
A kliens oldalon (JavaScript):
// NPM-es változat
// npm install @microsoft/signalr
const hubConnection = new signalR.HubConnectionBuilder()
.withUrl("/myhub") // Hub URL
.build();
// Bejövő üzenetek kezelése a szerverről
hubConnection.on("ReceiveMessage", (user, message) => {
// A kapott üzenet feldolgozási logikája
console.log(`${user}: ${message}`);
});
// Kapcsolat nyitása
hubConnection.start()
.then(() => console.log("Kapcsolat indult"))
.catch(err => console.error(err.toString()));
// Üzenet küldése a szervernek
// hubConnection.invoke("SendMessage", "Ügyfél", "Helló az ügyféltől!");
A SignalR automatikusan kiválasztja az optimális szállítást a kliens és a szerver képességei alapján, WebSocket-tel kezdve, és szükség esetén régebbi protokollokra váltva. Ez széles körű kompatibilitást biztosít.