2013-02-28 18 views
66

Sto utilizzando SignalR per trasmettere messaggi a tutti i miei clienti. Ho bisogno di innescare la messa in onda al di fuori della mia classe hub vale a dire qualcosa come di seguito:Come utilizzare l'istanza hub SignalR all'esterno di hubpipleline

var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");

sto ottenendo il messaggio di errore come:

Utilizzando un'istanza Hub non creata dal HubPipeline non è supportato.

risposta

111

è necessario utilizzare GetHubContext:

var context = GlobalHost.ConnectionManager.GetHubContext<chatHub>(); 
context.Clients.All.Send("Admin", "stop the chat"); 

Questo è descritto in modo più dettagliato a http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub.

+0

Grazie ho trovato –

+4

"context.Clients.All.Send" non trasmette di nuovo al chiamante, solo agli altri. qualche idea? – user384080

+4

Se si utilizza 'GetHubContext' non è presente un chiamante poiché è destinato ad essere utilizzato al di fuori di un hub. 'Clients.All' dovrebbe indirizzare ogni client che è attualmente connesso all'hub. – halter73

Problemi correlati