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));
            }
        }
Ejemplo n.º 2
0
        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()));
            }
        }