Sobes.tech
Middle

SignalR nima?

sobes.tech AI

AIdan javob

SignalR — bu ASP.NET Core uchun kutubxona bo‘lib, u WebSocket va Long Polling funksiyalarini veb-ilovalarga qo‘shishga imkon beradi va real vaqtda interaktiv ssenariylarni yaratish uchun ishlatiladi.

U server va mijoz o‘rtasida ikki tomonlama aloqa ta’minlaydi.

Asosiy foydalanish holatlari:

  • Chat ilovalari.
  • Onlayn o‘yinlar.
  • Ma’lumotlarni real vaqtda yangilash (masalan, grafiklar, bildirishnomalar).
  • Foydalanuvchi faoliyatini monitoring qilish.

Asosiy komponentlar:

  • Hub’lar: Mijozlardan keladigan chaqiriqlarni qayta ishlovchi va mijozlarga xabar yuboradigan sinflar.
  • Ulanishlar: Mijoz ulanishlarini ifodalaydi. Ular WebSocket, Server-Sent Events yoki Long Polling orqali o‘rnatilishi mumkin (mijoz va server qo‘llab-quvvatlashiga qarab).

Hub yaratish misoli:

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

public class MyHub : Hub
{
    // Mijoz tomonidan chaqirilishi mumkin bo‘lgan metod
    public async Task SendMessage(string user, string message)
    {
        // Barcha ulanishgan mijozlarga xabar yuborish
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

Startup.csda konfiguratsiya:

// ConfigureServices ichida
services.AddSignalR();

// Configure ichida
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<MyHub>("/myhub"); // Hub URL bilan bog‘lash
});

Mijoz tomonida (JavaScript):

// npm bilan variant
// npm install @microsoft/signalr

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

// Serverdan kelayotgan xabarlarni qayta ishlash
hubConnection.on("ReceiveMessage", (user, message) => {
    // Olingan xabarni qayta ishlash logikasi
    console.log(`${user}: ${message}`);
});

// Ulanishni ochish
hubConnection.start()
    .then(() => console.log("Ulanish boshlandi"))
    .catch(err => console.error(err.toString()));

// Xabar yuborish serverga
// hubConnection.invoke("SendMessage", "Mijoz", "Salom mijoz!" );

SignalR avtomatik ravishda mijoz va server imkoniyatlariga asoslangan eng optimal transportni tanlaydi, WebSocket bilan boshlanadi va ular mavjud bo‘lmasa eski protokollarga o‘tadi. Bu keng moslashuvchanlikni ta’minlaydi.