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.