在SignalR集线器方法中设置事件处理程序的正确方法

时间:2019-06-22 10:15:43

标签: event-handling signalr-hub asp.net-core-signalr signalr-service

我有一个signalR集线器方法,它将接收来自客户端的请求。收到请求后,我需要联系第三方API,该API会通过触发事件将事件不断地发送响应到我的服务,我在hub方法中为响应附加了事件处理程序,并且该事件处理程序是Hub类的私有方法。如果集线器是瞬态的,我将无法获得响应,因为将在完成集线器方法后触发该事件。但是我得到了回应。我想知道这是否是执行此操作的好方法,否则如果有许多客户端,可能会导致内存泄漏或其他一些问题。我也想知道在集线器方法中设置事件处理程序有哪些不同的合适方法。我也对在Hub方法之外设置和实现事件处理程序的方法持开放态度。

我尝试在其他类中实现事件处理程序,并创建一个对象以在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.
    }

};

0 个答案:

没有答案