在SignalR是Hub.Context线程安全的?(In SignalR is Hub.Conte

2019-06-23 16:14发布

如果有来自不同客户端存在的一个以上的请求同时然后Hub.Context.ConnectionId的值的处理程序的执行期间改变。

说我有2个客户端ID A和B连,我已经得到了我的集线器叫做foo()的方法。 我发送请求从A到服务器调用FOO(),然后同时从A的请求正在被处理我从乙发送请求调用FOO()。 在A的请求Hub.Context.ConnectionId == A的处理的开始,但在该方法调用Hub.Context.ConnectionId的端== B.

我应该复制Hub.Context? 在什么时候我应该这样做?

Answer 1:

它不需要线程安全的,因为集线器实例不是静态的,所以你不需要复制任何东西。

他们每次调用创建。 因此,从客户端每次调用将创建一个新的枢纽实例和HubContext。



Answer 2:

这并不直接回答你的问题,但我平时的工作流程是设置来电者的值,当他们第一次连接,它可以完成你需要什么?

Caller.clientId = Guid.NewGuid();


文章来源: In SignalR is Hub.Context thread safe?