In SignalR ist Hub.Context Thread sicher?

8

Wenn mehr als eine Anfrage gleichzeitig von verschiedenen Clients kommt, ändert sich der Wert von Hub.Context.ConnectionId während der Ausführung des Handlers.

Angenommen, ich habe zwei Clients mit den Client-IDs A und B verbunden, und auf meinem Hub habe ich eine Methode namens foo (). Ich sende eine Anfrage von A an den Server, der foo () aufruft, und dann, während die Anfrage von A verarbeitet wird, sende ich eine Anfrage von B, die foo () aufruft. Zu Beginn der Verarbeitung von A's Anfrage Hub.Context.ConnectionId == A aber am Ende des Methodenaufrufs Hub.Context.ConnectionId == B.

Soll ich den Hub.Context kopieren? An welchem ​​Punkt sollte ich das tun?

    
Daniel James Bryars 16.04.2012, 19:03
quelle

2 Antworten

7

Es muss nicht threadsicher sein, da Hub-Instanzen nicht statisch sind, sodass Sie nichts kopieren müssen.

Sie werden pro Anruf erstellt. Daher wird bei jedem Aufruf vom Client eine neue Hub-Instanz und HubContext erstellt.

    
davidfowl 21.04.2012, 19:03
quelle
0

Dies beantwortet nicht direkt Ihre Frage, aber mein üblicher Workflow besteht darin, dem Anrufer einen Wert zuzuweisen, wenn er das erste Mal eine Verbindung herstellt, was möglicherweise das bringt, was Sie brauchen?

%Vor%     
Jason More 17.04.2012 19:17
quelle

Tags und Links