8

如果不同客户端同时发生多个请求,则 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 吗?我应该在什么时候这样做?

4

2 回答 2

7

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

它们是按调用创建的。因此来自客户端的每次调用都会创建一个新的 Hub 实例和 HubContext。

于 2012-04-21T19:03:52.143 回答
0

这并不能直接回答您的问题,但是我通常的工作流程是在呼叫者首次连接时为其设置一个值,这可能会完成您的需要吗?

Caller.clientId = Guid.NewGuid();
于 2012-04-17T19:17:52.007 回答