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.