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тен баштап, эскирген протоколдорго өтүп, алардын жоктугунда. Бул кеңири шайкештикти камсыздайт.