Nel corso di questo speciale su ASP.NET SignalR abbiamo visto molti esempi di utilizzo delle peculiarità degli hub. I casi esaminati, però, hanno tutti in comune una caratteristica: la comunicazione è sempre originata da una chiamata client, che viene poi intercettata all'interno del codice dell'hub per scatenare l'invio di una serie di messaggi ai vari client connessi.
Questa modalità di funzionamento, però, copre solo alcune delle casistiche. Immaginiamo per esempio di voler notificare i vari client che, a valle di una modifica di un dato sul database, devono ricaricare il contenuto della pagina: è un tipico caso in cui il messaggio può trarre origine da un controller, o magari da un web service che abbiamo esposto a una terza parte. Situazioni simili possono essere gestite grazie alla classe HubContext.
Questo oggetto non è esposto direttamente dal framework, ma può essere istanziato con la classe GlobalHost, e nello specifico tramite il ConnectionManager, a cui dobbiamo passare il tipo dell'Hub tramite cui inviare il messaggio.
public class HomeController : Controller { public ActionResult Broadcast() { var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); hubContext.Clients.All.newMessage("Sent from the controller"); return this.View(); } }
Nell'esempio in alto abbiamo inviato il messaggio newMessage a tutti i client collegati, sfruttando la proprietà Clients.All. Grazie a HubContext, tuttavia, abbiamo a disposizione tutte le primitive che abbiamo visto negli script precedenti, per dialogare, per esempio, con un singolo client, con un gruppo e via discorrendo.
Per approfondimenti
Il nostro speciale Web Real Timehttps://www.aspitalia.com/focuson/1300/Speciale-Web-Real-Time-WebSockets-SignalR.aspx
Gestire i gruppi in un Hub di ASP.NET SignalR
https://www.aspitalia.com/script/1123/Gestire-Gruppi-Hub-ASP.NET-SignalR.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Configurare lo startup di applicazioni server e client con .NET Aspire
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Usare le navigation property in QuickGrid di Blazor
Implementare l'infinite scroll con QuickGrid in Blazor Server
Estrarre dati randomici da una lista di oggetti in C#
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare DeepSeek R1 con Azure AI
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Generare un hash con SHA-3 in .NET
Usare il colore CSS per migliorare lo stile della pagina