2016-12-01 2 views
0

Ich arbeite mit SignalR & MVC. Der Code, den ich nachgeschlagen habe, verbindet den Benutzer tatsächlich mit dem Hub beim Start.Verbinden mit SignalR nach Login oder Verzögerte Verbindung mit SignalR

[assembly: OwinStartup(typeof(Uno.Hubs.Startup))] 

namespace ChatTBox 
{ 
    public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888 
      app.MapSignalR(); 
     } 
    } 


} 

Allerdings muss ich den Benutzer SignalR verbinden, nachdem er sich erfolgreich angemeldet hat und dann zu halten und die Liste der verbundenen Benutzers signiert anzuzeigen. Wie geht das?

Antwort

0

Dieser Anruf verbindet den Benutzer nicht mit dem Hub, er registriert einfach die SignalR-Middleware (genauso wie Sie app.UseWebApi() aufrufen würden). Die Verbindung eines Benutzers wird vom Client vom Client initiiert.

Sie können einen Client nach der Anmeldung vom Client aus verbinden. Das Beispiel auf asp.net kann geändert werden, um:

+0

Ok, was ich verstanden habe, dass ich die Verbindung erstellen und es aufrufen sollte, nachdem der Benutzer sich erfolgreich am Portal angemeldet hat. Aber wie verwalte ich Anrufe an einzelne Absender statt Massensendungen? – Salman

+0

Überschreiben Sie in Ihrer Hub-Klasse auf dem Server die Ereignisse OnConnected und OnDisconnected, und bewahren Sie eine statische Auflistung von Verbindungs-IDs mit der entsprechenden Benutzer-ID auf. Ich habe ein statisches Wörterbuch der Verbindungs-ID zu Benutzernamen für ähnliche Zwecke verwendet. Damit fügen Sie einen Benutzer mit der Context.ConnectionId-Eigenschaft im Hub hinzu oder entfernen ihn, wodurch Sie die Verbindungs-ID beim Senden an einen Client verwenden können: Clients.Client (connectionId) .addMessageToPage (name, msg). – reckface