Решение для "дискретных" обновлений в реальном времени
Я создаю приложение ASP.NET Core с угловым интерфейсом. Рассмотрим следующий сценарий. Клиент отправляет запрос. Основываясь на запросе, сервер генерирует сотни или тысячи математических моделей, которые он рассчитывает для некоторой инфраструктуры (пример несколько гипотетичен - так что терпите меня). Результаты возвращаются на сервер через несколько минут. Сервер возвращает какой-то ответ клиенту (в идеале, JSON).
Является ли SignalR решением для такого сценария? Я всегда думал, что SignalR предназначен для более непрерывной (в реальном времени) потоковой передачи; не для дискретного сценария, который я описал. Есть ли другая библиотека, которая бы лучше подходила для этой задачи?
1 ответ
Я думаю, что SignalR идеально подходит для этого сценария. Сервер должен "сообщить" клиенту, когда данные готовы. Как бы Вы это сделали?
- Клиент запрашивает данные каждые несколько секунд, используя интервал. Это может быть хорошо, но допустим, что ваш интервал длится 10 секунд. Если данные будут готовы в секунду 11, вы не будете обновлены до второго числа 20. Вы можете сократить интервал времени для этого вопроса, получая больше звонков на сервер и потери сети.
- Клиент поддерживает прямую связь с сервером, прослушивая любые сигналы / обновления. Сервер получает данные, а затем вызывает команду / метод в вашем клиенте. Используя этот метод, вы получаете больше преимуществ, таких как сообщение о прогрессе пользователю (в случае, если вы можете разделить генерацию модели на разные части на сервере), поскольку у SignalR очень простой способ сделать это.