1

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!

+0

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

+0

Dieses Wörterbuch muss statisch sein ... oder wenn der Benutzer das nächste Mal eine Hub-Methode aufruft, gehen die Daten verloren? – Schippert

+0

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

Antwort

0

indem man versucht, eine Naben Instanz pro Client-Verbindung zu erhalten, ist ziemlich hart, da Naben genau das Gegenteil ausgebildet sind (ein Weg, um einige oder alle Clients verbunden zu sprechen)

Sie wahrscheinlich für die Suche sind Persistent Connection API

PS: Ich sehe nicht wirklich, warum Sie eine db so schnell ausschließen, da Sie immer einen im Speicher Cache wie redis verwenden könnten.