8

異なるクライアントから同時に複数のリクエストが発生した場合、ハンドラの実行中に Hub.Context.ConnectionId の値が変化します。

クライアント ID A と B に接続された 2 つのクライアントがあり、ハブに foo() というメソッドがあるとします。A から foo() を呼び出してサーバーに要求を送信し、A からの要求が処理されている間に、foo() を呼び出して B から要求を送信します。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 に答える