Sobes.tech
Middle

SignalR эмне?

sobes.tech AI

AIден жооп

SignalR — бул ASP.NET Core үчүн китепкана, ал веб-колдонуучуларга WebSocket жана Long Polling функцияларын кошууга мүмкүндүк берет, реалдуу убакытта интерактивдүү сценарийлер түзүү үчүн.

Ал сервер менен кардар ортосунда эки тараптуу байланышты камсыз кылат.

Негизги колдонуу сценарийлери:

  • Чат тиркемелери.
  • Онлайн оюндар.
  • Маалыматтарды реалдуу убакытта жаңыртуу (мисалы, графиктер, кабарламалар).
  • Колдонуучулардын активдүүлүгүн көзөмөлдөө.

Негизги компоненттери:

  • Хабдар (Hubs): Кардарлардын кирүү чакырууларын иштеткен жана кардарларга билдирүүлөрдү жөнөткөн класстар.
  • Байланыштар (Connections): Кардарлардын байланышын көрсөтөт. Алар WebSocket, Server-Sent Events же Long Polling аркылуу орнотулушу мүмкүн (кардар жана сервердин колдоосуна жараша).

Хаб түзүү мисалы:

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

public class MyHub : Hub
{
    // Кардар чакыра турган метод
    public async Task SendMessage(string user, string message)
    {
        // Бардык туташкан кардарларга билдирүү жөнөтүү
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}

Startup.csдеги конфигурация:

// In ConfigureServices
services.AddSignalR();

// In Configure
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<MyHub>("/myhub"); // Хабды URL менен байланыштыруу
});

Клиент тарап (JavaScript):

// npm версиясы
// npm install @microsoft/signalr

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

// Серверден келген билдирүүлөрдү иштетүү
hubConnection.on("ReceiveMessage", (user, message) => {
    // Алынган билдирүүнү иштетүү логикасы
    console.log(`${user}: ${message}`);
});

// Байланышты ачуу
hubConnection.start()
    .then(() => console.log("Байланыш башталды"))
    .catch(err => console.error(err.toString()));

// Серверге билдирүү жөнөтүү
// hubConnection.invoke("SendMessage", "Клиент", "Куттуктайм, клиент!");

SignalR автоматтык түрдө кардардын жана сервердин мүмкүнчүлүктөрүнө жараша эң ылайыктуу транспортту тандайт, WebSocketтен баштап, эскирген протоколдорго өтүп, алардын жоктугунда. Бул кеңири шайкештикти камсыздайт.