Правильный способ установки обработчика событий в методе signalR hub - PullRequest
0 голосов
/ 22 июня 2019

У меня есть метод-концентратор signalR, который будет получать запросы от клиента. После получения запроса мне нужно связаться со сторонним API, который будет непрерывно отправлять ответы моему сервису, вызывая событие, к которому я прикрепил обработчики событий для ответа в методе-концентраторе, а обработчики событий являются частным методом класса-концентратора. Если концентраторы временные, я не смогу получить ответ, так как событие будет запущено после завершения выполнения метода концентратора. Но я получаю ответ. Я хотел знать, является ли это хорошим способом сделать это, или это могло бы привести к утечкам памяти или некоторой другой проблеме, если есть много клиентов. Я также хотел бы знать, каковы различные подходящие подходы для установки обработчика событий в методе концентратора. Я также открыт для подходов, в которых обработчики событий устанавливаются и реализуются вне метода хаба.

Я попытался реализовать обработчик событий в каком-то другом классе и создать объект для ссылки на него в методе Hub. Это также сработало. Я думаю, что объекты-концентраторы не удаляются, если какой-то объект ссылается на них.

public class Myhub: Hub {
    public async setup(){
        // setup params to call API
        // responseEvent is called by API multiple times 
           responseEvent += Eventhandler;
        // send the request. 
        // method is closed. The responseEvent will be triggered after this 
        // method is finished executing.
    }
    private Eventhandler(response){
        // send response to the appropriate Client.
    }

};
...