как создать поведение производительности запроса для signalr

#c# #signalr

#c# #signalr

Вопрос:

Кто знает. Как я могу сделать что-то подобное для signal r hub? Существуют ли какие-либо инструменты-концентраторы для встраивания в конвейер обработки запросов, помимо фильтров?

     public class RequestPerformanceBehaviour<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
    {
        private readonly Stopwatch _timer;
        private readonly ILogger<TRequest> _logger;

        public RequestPerformanceBehaviour(ILogger<TRequest> logger)
        {
            _timer = new Stopwatch();

            _logger = logger;
        }

        public async Task<TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate<TResponse> next)
        {
            _timer.Start();

            var response = await next();

            _timer.Stop();

            if (_timer.ElapsedMilliseconds > 500)
            {
                var name = typeof(TRequest).Name;
                _logger.LogWarning("Long Running Request: {Name}({ElapsedMilliseconds} milliseconds) {@Request}", name, _timer.ElapsedMilliseconds,request);
            }

            return response;
        }
    }
 

Ответ №1:

Вы можете включить трассировку и ведение журнала для отслеживания производительности SignalR. Затем вы также можете наблюдать за показателями, следуя этой документации.