Middle
Co je SignalR?
sobes.tech AI
Odpověď od AI
SignalR je knihovna pro ASP.NET Core, která umožňuje přidat funkce WebSocket a Long Polling do webových aplikací pro vytváření interaktivních scénářů v reálném čase.
Zajišťuje obousměrnou komunikaci mezi serverem a klientem.
Hlavní scénáře použití:
- Chatové aplikace.
- Online hry.
- Aktualizace dat v reálném čase (například grafy, oznámení).
- Monitoring aktivity uživatelů.
Hlavní komponenty:
- Huby: Třídy, které zpracovávají příchozí volání od klientů a odesílají zprávy klientům.
- Připojení: Představují připojení klientů. Mohou být navázána přes WebSocket, Server-Sent Events nebo Long Polling (v závislosti na podpoře klienta a serveru).
Příklad vytvoření hubu:
// MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
public class MyHub : Hub
{
// Metoda, kterou může volat klient
public async Task SendMessage(string user, string message)
{
// Odeslání zprávy všem připojeným klientům
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
Konfigurace v Startup.cs:
// V ConfigureServices
services.AddSignalR();
// V Configure
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<MyHub>("/myhub"); // Mapování hubu na URL
});
Na straně klienta (JavaScript):
// Varianta s npm
// npm install @microsoft/signalr
const hubConnection = new signalR.HubConnectionBuilder()
.withUrl("/myhub") // URL hubu
.build();
// Zpracování příchozích zpráv ze serveru
hubConnection.on("ReceiveMessage", (user, message) => {
// Logika zpracování přijaté zprávy
console.log(`${user}: ${message}`);
});
// Otevření spojení
hubConnection.start()
.then(() => console.log("Spojení navázáno"))
.catch(err => console.error(err.toString()));
// Odeslání zprávy na server
// hubConnection.invoke("SendMessage", "Klient", "Ahoj od klienta!");
SignalR automaticky vybírá optimální přenosový protokol v závislosti na schopnostech klienta a serveru, začíná WebSocketem a přepíná na starší protokoly, pokud jsou nedostupné. To zajišťuje širokou kompatibilitu.