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 конфигурациясы:

// ConfigureServices ішінде
services.AddSignalR();

// 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-тан бастап ескі протоколдарға ауысады. Бұл кең үйлесімділікті қамтамасыз етеді.