Sobes.tech
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.