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-ից և անցում կատարելով ավելի հին պրոտոկոլների՝ նրանց բացակայության դեպքում: Սա ապահովում է լայն համատեղելիություն։