如果同时从不同的客户端发出多个请求,则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吗?我应该在什么时候这样做?
答案 0 :(得分:7)
它不需要是线程安全的,因为Hub实例不是静态的,因此您不需要复制任何东西。
每次通话都会创建它们。因此,来自客户端的每个调用都将创建一个新的Hub实例和HubContext。
答案 1 :(得分:0)
这不能直接回答你的问题,但我通常的工作流程是在第一次连接时在呼叫者上设置一个值,这可能会达到你需要的效果吗?
Caller.clientId = Guid.NewGuid();