Sobes.tech
Middle

SignalR nədir?

sobes.tech Süni İntellekt

AI-dan cavab

SignalR ASP.NET Core üçün kitabxanadır və veb tətbiqlərə WebSocket və Long Polling funksionallığını əlavə etməyə imkan verir və real vaxtda interaktiv ssenarilər yaratmaq üçün istifadə olunur.

Server və müştəri arasında ikitərəfli əlaqə təmin edir.

Əsas istifadə halları:

  • Çat tətbiqləri.
  • Onlayn oyunlar.
  • Real vaxtda məlumatların yenilənməsi (məsələn, qrafiklər, bildirişlər).
  • İstifadəçi fəaliyyətinin monitorinqi.

Əsas komponentlər:

  • Hub’lar: Müştərilərdən gələn çağırışları idarə edən və mesajlar göndərən sinflər.
  • Bağlantılar: Müştəri bağlantılarını təmsil edir. Onlar WebSocket, Server-Sent Events və ya Long Polling vasitəsilə qurula bilər (müştəri və serverin dəstəyindən asılı olaraq).

Hub yaratma nümunəsi:

// MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

public class MyHub : Hub
{
    // Müştəri tərəfindən çağrıla bilən metod
    public async Task SendMessage(string user, string message)
    {
        // Bütün qoşulmuş müştərilərə mesaj göndərmək
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

Startup.cs-də konfiqurasiya:

// ConfigureServices-də
services.AddSignalR();

// Configure-də
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<MyHub>("/myhub"); // Hub-un URL-ə xəritələnməsi
});

Müştəri tərəfində (JavaScript):

// npm ilə variant
// npm install @microsoft/signalr

const hubConnection = new signalR.HubConnectionBuilder()
    .withUrl("/myhub") // Hub-un URL-i
    .build();

// Serverdən gələn mesajların işlənməsi
hubConnection.on("ReceiveMessage", (user, message) => {
    // Gələn mesajın işlənməsi loqikası
    console.log(`${user}: ${message}`);
});

// Bağlantını açmaq
hubConnection.start()
    .then(() => console.log("Əlaqə başladı"))
    .catch(err => console.error(err.toString()));

// Serverə mesaj göndərmək
// hubConnection.invoke("SendMessage", "Müştəri", "Salam müştəridən!");

SignalR avtomatik olaraq müştəri və serverin imkanlarına əsaslanaraq ən optimal nəqliyyat vasitəsini seçir, WebSocket ilə başlayır və lazım olduqda köhnə protokollərə keçir. Bu, geniş uyğunluğu təmin edir.