Gibt es einen Weg, um die Anzahl der verbindungen in Signalr-hub-Gruppe?

Hier ist mein problem, ich möchte zu verfolgen, wenn der Benutzer online ist oder offline und informieren Sie andere Kunden über Sie. Ich bin mit hubs und umgesetzt IConnected und IDisconnect Schnittstellen.

Meine Idee war, eine Benachrichtigung an alle clients, wenn der hub erkennt verbinden oder zu trennen. Standardmäßig, wenn der Benutzer die Seite aktualisiert bekommt er neue Verbindungs-id und schließlich vorherigen Verbindung disconnect aufrufen, Benachrichtigen anderen clients Benutzer offline ist, obwohl er eigentlich online ist.

Ich habe versucht, meine eigenen ConnectionIdFactory Rückkehr Benutzername für die Verbindungs-id, aber mit mehreren tabs geöffnet wird er irgendwann erkennen, Benutzer connectionid getrennt, und nach, dass Clients Seite-hub versuchen erfolglos die Verbindung zum hub in endlos-Schleife verschwenden Speicher-und cpu-making-browser fast unbrauchbar. Ich brauchte, um es zu beheben so schnell entfernt habe ich mein Werk und jetzt habe ich hinzufügen jede neue Verbindung zu der Gruppe mit Benutzername, so kann ich einfach Benachrichtigen einzelnen Benutzer auf alle Anschlüsse, aber ich habe dann problem mit der Erkennung, wenn der Benutzer online oder offline ist, da ich nicht weiß, wie viele aktive Benutzer Verbindung hat.

So Frage ich mich, gibt es einen Weg, um die Anzahl der verbindungen, die in einer Gruppe? Oder wenn jemand hat ein paar bessere Idee, wie das zu verfolgen, wenn Benutzer offline geht?

Ich bin mit Signalr 0.4

  • Man könnte ein Dictionary<string, HashSet<string>> wo der Schlüssel ist, den Benutzernamen und das hashset enthält die connectionId(s) für diesen Benutzer. # Benutzer = Schlüssel.Count(), # der verbindungen = dict.Werte.Sum(x=>x.Count());
  • Website sollte die Arbeit in web-farm-Szenario, also kann ich nicht verwenden Wörterbuch. Ich konnte speichern von verbindungen in der db, aber ich würde gerne vermeiden, wenn möglich.
  • Wenn Sie sagen, dass der Benutzer die Seite aktualisieren und er bekommt eine neue Verbindungs-id, ich bin die Speicherung von Verbindungs-ID in meiner DB und wenn der Benutzer die Anzeige von zwei Seiten auf meine Seite, wo meine Nabe ist die gleiche Verbindungs-ID ist die gleiche wie gut. Warum sind Sie immer separate Verbindungs-ID. Ich denke, Sie bekommen nur andere ID, wenn der client ist anders.
  • Zu sagen, wie zu verfolgen online-offline habe ich nur store-Benutzernamen und connectionID in DB. In einem anderen app, die ich erstellen Sie eine Gruppe als eine Rolle, so dass Benutzer können sprechen in Ihrer Rolle oder super admin oder ES nur durch die Kenntnis Ihrer Rolle. Ich bin mit ASP.net Mitgliedschaft und Active Directory. Funktioniert in beide.
InformationsquelleAutor pajo | 2012-04-02
Schreibe einen Kommentar