Данные периодически обновляются в словаре через Quartz, но это происходит асинхронно в задаче, а как данные на странице при этом обновлять? То есть когда идёт обновление в задаче Quartz?
Re: Blazor Server как обновлять периодически страницу
Здравствуйте, dsalodki, Вы писали:
D>Данные периодически обновляются в словаре через Quartz, но это происходит асинхронно в задаче, а как данные на странице при этом обновлять? То есть когда идёт обновление в задаче Quartz?
SignalR https://infinum.com/blog/real-time-data-blazor-webassembly-signalr/
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, dsalodki, Вы писали:
D>Данные периодически обновляются в словаре через Quartz, но это происходит асинхронно в задаче, а как данные на странице при этом обновлять? То есть когда идёт обновление в задаче Quartz?
Уведомляй компонент из асинхронной задачи через колбэк, в котором уведоми компонент, что состояние изменилось и нужно перерисоваться с пом. StateHasChanged:
await InvokeAsync(StateHasChanged);
Re: Blazor Server как обновлять периодически страницу
Здравствуйте, dsalodki, Вы писали:
D>Данные периодически обновляются в словаре через Quartz, но это происходит асинхронно в задаче, а как данные на странице при этом обновлять? То есть когда идёт обновление в задаче Quartz?
для передачи событий лучше всего использовать синглтон сервис через интерфейс
Здравствуйте, pilgrim_, Вы писали:
_>Уведомляй компонент из асинхронной задачи через колбэк, в котором уведоми компонент, что состояние изменилось и нужно перерисоваться с пом. StateHasChanged:
_>
_>await InvokeAsync(StateHasChanged);
_>
Что бы вызвать StateHasChanged, нужно получить событие с сервера или иной системы. Я так понял, на сервере обновились данные и надо сообщить клиентам, что бы обновились.
Я давно не брал в руки блазор. Многое конечно изменилось
Здравствуйте, Serginio1, Вы писали:
S>Что бы вызвать StateHasChanged, нужно получить событие с сервера или иной системы. Я так понял, на сервере обновились данные и надо сообщить клиентам, что бы обновились. S>Я давно не брал в руки блазор. Многое конечно изменилось
S>https://infinum.com/blog/real-time-data-blazor-webassembly-signalr/
Речь идёт о Blazor Server, вся движуха (изменение данных, обновление UI) происходит в одном процессе.
Re[4]: Blazor Server как обновлять периодически страницу
Здравствуйте, pilgrim_, Вы писали:
S>>Что бы вызвать StateHasChanged, нужно получить событие с сервера или иной системы. Я так понял, на сервере обновились данные и надо сообщить клиентам, что бы обновились. S>>Я давно не брал в руки блазор. Многое конечно изменилось
S>>https://infinum.com/blog/real-time-data-blazor-webassembly-signalr/
_>Речь идёт о Blazor Server, вся движуха (изменение данных, обновление UI) происходит в одном процессе.
То есть через тот же SignalR(Websocket) внутри?
Blazor Server
This option hosts Razor components in the ASP.NET Core Web App, which means that the application is 100% run on the server. Blazor Server uses SignalR to communicate between the server and the client via the WebSockets protocol. It allows for full .NET API compatibility.
With Blazor Server, each new browser window requires a new instance of a server-managed component state. Because of that, there is a constant bi-directional connection between the client and server, so it would be smart to consider scaling the application.
Спасибо
и солнце б утром не вставало, когда бы не было меня
Здравствуйте, Serginio1, Вы писали:
_>>Речь идёт о Blazor Server, вся движуха (изменение данных, обновление UI) происходит в одном процессе. S>То есть через тот же SignalR(Websocket) внутри?
Скорее снаружи, ну да, SignalR используется как транспорт для взаимодействия с клиентом (браузером). Вопрос же ТС был как уведомить компонент о том, что что-то поменялось, это уведомление делается в рамках процесса Blazor сервера. А уж сам Blazor сервер при этом посылает необходимые изменения на клиент с пом. SignalR, но для разработчика Blazor сервера это имхо маловажные детали (хотя знать об этом желательно), т.к. возможны реализации Blazor inproc-сервер напр. для десктопа, где транспорт может быть иной (прямые вызовы методов обновления UI).