Я решил эту проблему с помощью многих проб и ошибок.
Сначала необходимо понимать разницу между pu sh и опросом в vaadin
Я использовал опрос, что означает клиент каждую секунду запрашивал сервер для обновления.
Но мой сценарий был другим, так как я продолжал выполнять процесс в обратном потоке, и мне нужно обновление в любом пользовательском интерфейсе в моем приложении, в котором процесс был готово .. !!
Так что для этого мне нужен механизм pu sh, который сервер информирует клиента после того, как работа сделана .. !!
Я пробовал с manual pu sh и automati c pu sh
по приведенному ниже коду добавьте в pom. xml
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-push</artifactId>
</dependency>
Следующим шагом является добавление класса In MainUI, который расширяет UI
код ниже
@Push
@SpringUI
public class MainUI extends UI {
}
Затем я попробовал с режимом pu sh, например PushMode.MANUAL и PushMode.AUTOMATI C код ниже
@Push(value = PushMode.MANUAL)
@SpringUI
public class MainUI extends UI {
}
и
@Push(value = PushMode.AUTOMATIC)
@SpringUI
public class MainUI extends UI {
}
это само по себе не сработало, поэтому транспортный режим у меня работает прозрачно ort = Transport.LONG_POLLING
код такой, как показано ниже. PushMode Я сохранил Вручную, лучше оставить MANUAL
@Push(value = PushMode.MANUAL, transport = Transport.LONG_POLLING)
@SpringUI
public class MainUI extends UI {
}
Transport.LONG_POLLING - это длинный запрос Get, сохраняемый между сервером и клиентом для обновления .. !!
и метод, в котором я вручную sh, это
public void notifyUsers() {
getUI().access(() -> {
mainUI.hideSpinner();
Notification.show.info("Task done");
ui.push();
});
}
Надеюсь, мое объяснение поможет .. !!