From 765ce4d4b3506d715ae89b371f0d34a3c48a574d Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Fri, 9 Apr 2021 20:52:05 -0700 Subject: [PATCH] [SignalR] Allocate HubCallerClients once per connection --- src/SignalR/server/Core/src/HubConnectionContext.cs | 1 + src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/SignalR/server/Core/src/HubConnectionContext.cs b/src/SignalR/server/Core/src/HubConnectionContext.cs index c7a399264083..ac6e78d1ee07 100644 --- a/src/SignalR/server/Core/src/HubConnectionContext.cs +++ b/src/SignalR/server/Core/src/HubConnectionContext.cs @@ -99,6 +99,7 @@ internal StreamTracker StreamTracker } internal HubCallerContext HubCallerContext { get; } + internal HubCallerClients HubCallerClients { get; set; } = null!; internal Exception? CloseException { get; private set; } diff --git a/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs b/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs index 07c235d63af0..06a3d641df9d 100644 --- a/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs +++ b/src/SignalR/server/Core/src/Internal/DefaultHubDispatcher.cs @@ -74,6 +74,7 @@ public DefaultHubDispatcher(IServiceScopeFactory serviceScopeFactory, IHubContex public override async Task OnConnectedAsync(HubConnectionContext connection) { var scope = _serviceScopeFactory.CreateScope(); + connection.HubCallerClients = new HubCallerClients(_hubContext.Clients, connection.ConnectionId); try { @@ -558,7 +559,7 @@ private async Task SendInvocationError(string? invocationId, private void InitializeHub(THub hub, HubConnectionContext connection) { - hub.Clients = new HubCallerClients(_hubContext.Clients, connection.ConnectionId); + hub.Clients = connection.HubCallerClients; hub.Context = connection.HubCallerContext; hub.Groups = _hubContext.Groups; }