Vaadin 8 PushMode.MANUAL - Для чего используется этот режим?
Vaadin Framework 8 предлагает встроенную поддержку технологии Push, как описано в руководстве.
Мы можем указать любой из трех режимов, один из которых PushMode.MANUAL
задокументировано как:
Нажатие включено. Двунаправленный канал устанавливается между клиентом и сервером и используется для передачи изменений состояния и вызовов RPC. Клиент не обновляется автоматически, если состояние на стороне сервера изменяется асинхронно; ui.push() должен быть вызван явно.
Если весь смысл Push заключается в автоматическом обновлении клиента, зачем нам использовать этот режим?
1 ответ
В обоих режимах канал связи остается открытым, поэтому обновления могут быть отправлены с сервера клиенту в любое время по сравнению с PushMode.DISABLED
он может отправлять обновления клиенту только в ответ на запрос, который клиент открыл в качестве реакции на действия пользователя.
Разница заключается в том, когда эта возможность фактически используется. С PushMode.AUTOMATIC
обновления отправляются всякий раз, когда сеанс разблокирован, т.е. после запуска в ожидании ui.access()
задачи, которые были запланированы из фонового потока.
Обновление не отправляется, если ничего не изменилось, но проверка этой ситуации все еще имеет некоторые накладные расходы. Также могут быть ситуации, когда много мелкозернистых ui.access()
задачи выполняются в быстрой последовательности, но нежелательно отправлять их все как отдельные обновления клиенту.
Цель PushMode.MANUAL
должен дать разработчику приложения контроль над тем, когда изменения действительно отправляются путем явного вызова ui.push()
, Это позволяет лучше оптимизировать потребление ресурсов в тех случаях, когда автоматический режим вызывает чрезмерное нажатие. Это достаточно редко, но возможность все еще существует.