как создать приложение в реальном времени - PullRequest
1 голос
/ 18 января 2012

используя jsf2.0 и PrimeFaces 3.0.RC2 , я хочу сделать <p:dataTable />, который касается моего системного запроса и когда один пользователь удерживает запрос. я должен обновить статус этого запроса и обновить <p:dataTable /> всех остальных пользователей, которые используют систему. Как я могу это сделать? enter image description here

предположим, что этот экран отображается для 10 пользователей, и когда кто-то меняет статус и нажимает кнопку Обновить , кнопка должна отображаться на экране всех пользователей.

и если кто-то добавит новую модель в БД, то это должно появиться.

я имею в виду пример, как электронная почта

Ответы [ 3 ]

0 голосов
/ 18 января 2012

Вам нужно искать так называемые push, reverse_ajax или comet техники.PrimeFaces реализует эту технологию с помощью сервлета, но работает только на сервере Jetty.Посмотрите на главу 6 Руководства пользователя.

Также взгляните на cometD , зрелый проект, который предоставляет реализации протокола Bayeux на javascript и других языках.Этот проект также использует Jetty, но переносим на другие контейнеры сервлетов, совместимые с Servlet-3.0.Я запускаю его на сервере GlassFish без каких-либо проблем, но на стороне клиента вместо этого у меня есть dojo dataGrid.Вы можете попытаться интегрироваться в dataTable PrimeFaces через Javascript, хотя я еще не сделал этого и не уверен, является ли это простой задачей или нет.

0 голосов
/ 10 января 2014

Техника push PrimeFaces работает на других серверах, например, на Glassfish. Хороший пример, как это реализовать: http://www.primefaces.org/showcase/push/counter.jsf

0 голосов
/ 18 января 2012

Другие пользователи не могут пассивно знать (через HTTP), когда что-то меняется на стороне сервера.Вы должны как-то активно опросить сервер и обновить изменения в пользовательском интерфейсе.Вы можете сделать таймер, который проверяет каждые x секунд, или сделать это для разных событий браузера (например, когда пользователь больше не использует окно браузера и затем возвращается к нему).

Однако лучше всего сделать кнопку обновления, чтобы пользователи могли запрашивать новые данные только тогда, когда они этого действительно хотят, чтобы вы не перечитывали из своей базы данных.*

...