Насколько я знаю, Vaadin предоставляет два дополнения для решения этой проблемы: ServerPush и DontPush . Оба дополнения можно импортировать через maven, и оба поддерживают WebSockets, а также резервные решения для браузеров без поддержки WebSocket. Хотя ServerPush предоставляет на первый взгляд больше возможностей, чем DontPush, его рейтинг ниже, чем у DontPush, возможно потому, что он сложнее.
Для отправки обновлений на клиент DontPush предлагает очень простое решение, которое не требует никаких изменений в веб-приложении. Только класс сервлета в web.xml необходимо заменить на org.vaadin.dontpush.server.impl.jetty.DontPushServlet
, а набор виджетов должен быть впоследствии обновлен с помощью mvn vaadin:update-widgetset
. Это все. Любые изменения на сервере будут автоматически отправлены клиенту. Я успешно протестировал это дополнение с Chrome 14. К сожалению, я не смог заставить его работать с Firefox 7.
Согласно веб-странице ServerPush, надстройка ServerPush также должна обеспечивать эту функцию. Однако я не мог понять, как настроить ServerPush для работы с Jetty. Более того, он кажется более сложным в использовании. Требуется несколько изменений в файле web.xml, а также дополнительные файлы конфигурации для сервера атмосферы.
В отличие от DontPush ServerPush предоставляет также явный механизм проталкивания, который позволяет вручную обновлять графический интерфейс, вызывая метод push()
определенного компонента-толкача, который необходимо предварительно добавить в главное окно. Однако мне также не удалось заставить это работать.