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