public Task Invoke(HttpContext context) { if (context.Request.Headers["Accept"] == "text/event-stream") { context.Response.ContentType = "text/event-stream"; context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); context.Response.Body.Flush(); var electronId = context.Request.Query["electronId"].ToString(); if (!string.IsNullOrEmpty(electronId)) { var client = new ServerSentEventsClient(context.Response, electronId); _serverSentEventsService.AddClient(client); context.RequestAborted.WaitHandle.WaitOne(); _serverSentEventsService.RemoveClient(electronId); return(Task.FromResult(true)); } return(Task.FromResult(false)); } else { context.Response.StatusCode = 200; return(_next(context)); } }
public ServerSentEventsServiceBenchmarks() { _serverSentEventsClient = new ServerSentEventsClient(Guid.NewGuid(), new ClaimsPrincipal(), new NoOpHttpResponse()); _serverSentEventsService = new ServerSentEventsService(); for (int i = 0; i < MULTIPLE_CLIENTS_COUNT; i++) { _serverSentEventsService.AddClient(new ServerSentEventsClient(Guid.NewGuid(), new ClaimsPrincipal(), new NoOpHttpResponse())); } }