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-ით და გადართვა უფრო ძველ პროტოკოლებზე, თუ საჭიროია. ეს უზრუნველყოფს ფართო თავსებადობას.