Hello.
My question is:
What would be the best method to create 'live-update' scheduler for multiple concurrent users?
I have analyzed help documents and could not find any sort of help / preferred way of moving forward,
Given that:
HubConnection connection;
protected override async Task OnInitializedAsync()
{
connection.On<List<AppointmentData>>("RecieveData", OnDataChange);
connection.On<View>("ChangeView", OnChangeView);
connection.On<DateTime>("ChangeDate", OnChangeDate);
await connection.StartAsync();
}
public void OnActionCompleted(ActionEventArgs<AppointmentData> args)
{
if (args.ActionType== ActionType.EventCreate || args.ActionType == ActionType.EventRemove || args.ActionType == ActionType.EventChange)
{
connection.InvokeAsync("SendData", DataSource);
}
}
public void OnNavigating(NavigatingEventArgs args)
{
if (args.Action == "view")
{
connection.InvokeAsync("SendViewData", Enum.Parse(typeof(View), args.CurrentView.ToString(), true));
}
if (args.Action == "date")
{
connection.InvokeAsync("SendSelectedDateData", args.CurrentDate);
}
}
Task OnChangeView(View view)
{
this.CurrView = view;
this.StateHasChanged();
return Task.CompletedTask;
}
Task OnChangeDate(DateTime date)
{
this.SelectedDate = date;
this.StateHasChanged();
return Task.CompletedTask;
}
Task OnDataChange(List<AppointmentData> data)
{
this.DataSource = data;
this.StateHasChanged();
return Task.CompletedTask;
}
|
public class ScheduleHub:Hub
{
public async Task SendData(List<Index.AppointmentData> data)
{
await Clients.Others.SendAsync("RecieveData", data);
}
public async Task SendViewData(View data)
{
await Clients.Others.SendAsync("ChangeView", data);
}
public async Task SendSelectedDateData(DateTime data)
{
await Clients.Others.SendAsync("ChangeDate", data);
}
} |