Possiedo un'applicazione ASP.NET MVC in esecuzione sul server A e alcuni servizi Web eseguiti sul server B. Ho implementato notifiche in tempo reale per le quali ho utilizzato SignalR sul server A. Ma ora I è necessario che il server B sia in grado di inviare messaggi a una vista servita dal server A (l'applicazione Web principale). Quindi, sto provando il tutorial here per coinvolgere il backplane di Redis.Uso di Redis con SignalR
A mio avvio nel server A, ho aggiunto il seguente:
GlobalHost.DependencyResolver.UseRedis("localhost", 6379, string.Empty, "abc");
app.MapHubs();
Qui, suppongo che "myApp" indica il canale e quando corro publish abc "hello world"
sulla console Redis, posso vedere l'abbonato count restituito come 1, ma non sono in grado di capire come un hub SignalR interagisce con il canale. Dove ricevo il messaggio sul server/vista? Possiamo abbonarci a un solo canale redis? Non possiamo configurare dinamicamente per iscriversi ad un particolare canale?
MODIFICA: Riesco a vedere i messaggi inviati dalla chat Applicazione implementata utilizzando SignalR su console redis se mi abbono a abc
.
Anche per ora ho implementato il mio listener redis sul server A che, ricevendo un messaggio dal canale redis, chiama la funzione hub signalR. Sono sicuro che ci deve essere un modo diverso per farlo e spero che il backplane redis possa aiutarmi, ma non sono sicuro di come funzioni.
Una soluzione semplice. Pubblicare un messaggio sul canale desiderato sul server B. Sottoscrivere il canale sul server A e inviare manualmente il messaggio all'hub signalR. –
Questo può sembrare stupido ma mi aiuterebbe a capire con chiarezza. Questo significa che ogni messaggio da visualizzare può essere inviato solo attraverso il server A e mai attraverso il server B direttamente? Qual è l'uso di signalR.redis qui allora? – labyrinth
Per favore controlla questo: - http://gigi.nullneuron.net/gigilabs/backplane-signalr-scaleout-with-redis/ Anche qui di seguito: - http://www.asp.net/signalr/overview/performance/scaleout -with-redis –