Skip to content

Commit 97d1f09

Browse files
committed
Optimization for Response.Write hot synchronous path. Resolves #14
1 parent 53503cb commit 97d1f09

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Lib.AspNetCore.ServerSentEvents/ServerSentEventsService.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,18 +153,27 @@ internal Task SendEventAsync(ServerSentEventBytes serverSentEventBytes)
153153

154154
private Task ForAllClientsAsync(Func<ServerSentEventsClient, Task> clientOperationAsync)
155155
{
156-
int clientTaskIndex = 0;
157-
Task[] clientsTasks = new Task[_clients.Values.Count];
156+
List<Task> clientsTasks = null;
158157

159158
foreach (ServerSentEventsClient client in _clients.Values)
160159
{
161160
if (client.IsConnected)
162161
{
163-
clientsTasks[clientTaskIndex++] = clientOperationAsync(client);
162+
Task operationTask = clientOperationAsync(client);
163+
164+
if (operationTask.Status != TaskStatus.RanToCompletion)
165+
{
166+
if (clientsTasks is null)
167+
{
168+
clientsTasks = new List<Task>();
169+
}
170+
171+
clientsTasks.Add(operationTask);
172+
}
164173
}
165174
}
166175

167-
return Task.WhenAll(clientsTasks);
176+
return (clientsTasks is null) ? Task.CompletedTask : Task.WhenAll(clientsTasks);
168177
}
169178
#endregion
170179
}

0 commit comments

Comments
 (0)