#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. Затем вы также можете наблюдать за показателями, следуя этой документации.