Ich verwende SignalR, um eine Verbindung zwischen meinem Client und meinem Server einzurichten. Ich möchte einige Benutzerdaten auf init speichern. Wenn der Benutzer eine Methode aufruft, möchte ich auf diese Variablen zugreifen, um einige Berechnungen durchzuführen und eine Antwort zurück an den Client zu senden.SignalR - Individuelle Variablen
Ich kann statische Variablen nicht verwenden, weil ich möchte, dass diese Variablen für jeden Client individuell sind. Das Speichern dieser Variablen in einem globalen Wörterbuch scheint für viele Benutzer nicht performant zu sein. Das Speichern der Daten in einer Datenbank ist keine Option, da der Client ungefähr alle 15-30 Sekunden eine Methode für einige Minuten aufruft und der Hub dann entsorgt werden kann.
Was ich versuche zu erreichen, ist eine Hub-Instanz pro Client. Eine offene Verbindung mit dem Server, 1-on-1. Ist das mit SignalR möglich und wie oder muss ich nach einer anderen Bibliothek suchen?
Vielen Dank,
Einen schönen Tag!
Ich denke, du hast das falsch. Ein Hub pro Anrufer wäre weniger effizient. Verwenden Sie den Single-Dictionary-Ansatz (ich könnte es nicht als ein statisches Wörterbuch persönlich, aber Sie sind auf dem richtigen Weg). – thab
Dieses Wörterbuch muss statisch sein ... oder wenn der Benutzer das nächste Mal eine Hub-Methode aufruft, gehen die Daten verloren? – Schippert
Ja, wenn Sie ein nicht statisches Mitglied verwenden, funktioniert es nicht. Alles, was ich sagte, ist, dass wenn Sie statische Variablen nicht mögen (Disclaimer: ich nicht), dann könnten Sie ein einzelnes Wörterbuch deklarieren und es über den Hub-Konstruktor füttern (siehe https://docs.microsoft.com/de-de us/aspnet/signager/overview/advanced/dependency-injection). – thab