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