1

我正在使用SignalR在我的客戶端和我的服務器之間建立連接。我想在init中存儲一些用戶數據。當用戶調用一個方法時,我想訪問這些變量來進行一些計算並將響應發送回客戶端。SignalR - 單個變量

我不能使用靜態變量,因爲我希望這些變量對於每個客戶端都是單獨的。將這些變量保存在一個全局字典中對於很多用戶來說似乎不具有表現力。將數據保存在數據庫中不是一種選擇方式,因爲客戶端大約每15到30秒調用一次方法,這會持續幾分鐘,然後可以丟棄集線器。

我試圖實現的是每個客戶端的一個集線器實例。與服務器的一個開放連接,1對1。 SignalR是否可以實現這一點,以及如何還是需要尋找另一個庫?

非常感謝,

祝您有美好的一天!

+0

我認爲你有這個錯誤。每個呼叫者一箇中心會效率較低。使用單個詞典方法(我可能不會將其作爲靜態字典個人化,但您沿着正確的軌道)。 – thab

+0

這本字典必須是靜態的,否則下次用戶調用集線器方法時,數據將會丟失? – Schippert

+0

是的,如果你使用非靜態成員,那麼它將無法工作。我只是說,如果你不喜歡靜態變量(聲明:我沒有),那麼你可以聲明一個字典並通過集線器構造器提供它(請參閱https://docs.microsoft.com/en- us/aspnet/signalr/overview/advanced/dependency-injection)。 – thab

回答

0

試圖讓每個客戶端連接的樞紐實例是非常困難的,因爲輪轂設計成正好相反(的方式向一些或所有連接的客戶端)

你可能尋找PS:我真的不明白爲什麼你這麼快排除分貝,因爲你總是可以使用內存緩存,如redis