public Guid AddClient(SseCleint client) { Guid clientId = Guid.NewGuid(); if (clients.TryAdd(clientId, client)) { this.logger.LogError("Can't add new client"); } return(clientId); }
public async Task Invoke(HttpContext context) { const string eventStreamType = "text/event-stream"; if (context.Request.Headers[HeaderNames.Accept] == eventStreamType) { context.Response.ContentType = eventStreamType; context.Response.Body.Flush(); var client = new SseCleint(context.Response); Guid clientId = this.sseService.AddClient(client); context.RequestAborted.WaitHandle.WaitOne(); sseService.RemoveClient(clientId); await Task.CompletedTask; } else { await this.next(context); } }