在SignalR中Hub.Context线程安全吗?

Dan*_*ars 8 c# iis-7.5 signalr

如果同时从不同客户端发生多个请求,则Hub.Context.ConnectionId的值在执行处理程序期间发生更改.

假设我有2个客户端与客户端ID A和B连接,我的Hub上有一个名为foo()的方法.我从A向服务器发送请求调用foo(),然后在处理来自A的请求时,我从B调用foo()发送请求.在处理A的请求开始时Hub.Context.ConnectionId == A但在方法结束时调用Hub.Context.ConnectionId == B.

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

dav*_*owl 7

它不需要是线程安全的,因为Hub实例不是静态的,因此您不需要复制任何东西.

它们是按呼叫创建的.因此,来自客户端的每个调用都将创建一个新的Hub实例和HubContext.