Пример #1
0
        public Guid AddClient(SseCleint client)
        {
            Guid clientId = Guid.NewGuid();

            if (clients.TryAdd(clientId, client))
            {
                this.logger.LogError("Can't add new client");
            }

            return(clientId);
        }
Пример #2
0
        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);
            }
        }