Sto utilizzando SignalR 2 e non riesco a capire come utilizzare i miei metodi Hub, ad esempio all'interno di un'azione del controller.Utilizzare i metodi Hub dal controller?
so di poter effettuare le seguenti operazioni:
var hub = GlobalHost.ConnectionManager.GetHubContext<T>();
hub.Clients.All.clientSideMethod(param);
Ma che esegue il metodo direttamente sul lato client.
Cosa succede se ho una logica di business nel mio lato server ClientSideMethod(param)
metodo Voglio chiamare dal mio controller allo stesso modo di quando viene chiamato dal lato client?
Al momento io uso public static void ClientSideMethod(param)
all'interno del mio hub e in tale metodo io uso il IHubContext
dal ConnectionManager
.
Non c'è niente di meglio da fare?
La seguente non funziona (più in SignalR 2?):
var hubManager = new DefaultHubManager(GlobalHost.DependencyResolver);
instance = hubManager.ResolveHub(typeof(T).Name) as T;
instance.ClientSideMethod(param);
Ci ho un "Hub non creato tramite Hub gasdotto non supportato" eccezione, quando si accede i Clienti.
perché non farlo da parte del cliente, che presumo è JS, si può fare una richiesta Ajax e fare quello che ti serve sul controller – MEYWD
@MEYWD: Perché ad esempio ho un'interfaccia di amministrazione che vorrei aggiornare quando "succede qualcosa". Per esempio. il client visita una pagina specifica, quindi vorrei attivare il metodo hub nell'azione del controller da quella pagina. Il vero cliente non se ne preoccupa, quindi perché dovrebbe pubblicare quel messaggio? – ChrFin
ho fatto qualcosa di simile, ho clienti e amministratori (client speciali), l'amministratore invia un comando e aspetta la risposta dal client, per fare ciò ho creato un elenco di amministratori e un elenco di client sull'hub, il admin sceglie un client, lo riserva in modo che nessun altro amministratore lo usi, quindi invia un comando, l'hub lo inoltra al client, il client restituisce la risposta all'hub, che in cambio viene inoltrato all'amministratore e la risposta viene stampata su lo schermo – MEYWD