Сигнал R, вызывающий методы на стороне клиента - PullRequest
0 голосов
/ 25 марта 2020

Есть ли лучший способ вызывать методы на стороне клиента или более общий c, так как я продолжаю регистрировать больше, что усложняет управление.

Это код клиента Signal R, в котором показаны три обработчика. Можно ли сделать это одним? Клиент SignalR

    public readonly HubConnection Conn;

    public event Action NotifyTeachers;
    public event Action NotifyStudents;
    public event Action NotifyBusess;             

    public List<Teachers> Teachers { get; private set; }
    public List<Studnets> Students { get; private set; }
    public List<Buses> Bueses { get; private set; }

    public Connection()
    {
        //Set new connection...        
        Conn.On<List<Teachers>>("UpdateTeachers", teachers =>
        {
            Teachers = teachers;
            NotifyTeachers?.Invoke();
        });

        Conn.On<List<Students>>("UpdateStudents", students =>
        {
            Students = students;
            NotifyStudents?.Invoke();
        });

        Conn.On<List<Buses>>("UpdateBuses", buses =>
        {
            Bueses = buses;
            NotifyBusess?.Invoke();
        });

    }

На сервере мы вызываем методы клиента, как показано ниже.

    BroadCastService

    public async Task UpdatePlan()
    {
        //Gets the latest list      
        await Hub.Clients.All.SendAsync("UpdateTeachers", GetAllTeachers());   
        ...         
    }

    public async Task UpdatePlan()
    {
        //Gets the latest list      
        await Hub.Clients.All.SendAsync("UpdateStudents", GetAllStudents());   
        ...         
    }

    public async Task UpdatePlan()
    {
        //Gets the latest list      
        await Hub.Clients.All.SendAsync("UpdateBuses", GetAllBuses());   
        ...         
    }
...