JSF+AJAX push: система чата / уведомлений в реальном времени

Я пытаюсь добавить некоторые функции в свое веб-приложение, что-то вроде чата "живого пользователя к пользователю" (например, чата Facebook) и системы уведомлений в реальном времени.

Давайте рассмотрим этот сценарий: у нас есть два пользователя, A и B.

А отправляет сообщение Б.

Если в браузере B открывается окно чата между B и A, мы обновляем его, показывая новое сообщение в браузере B. Если окна не открыты, нам нужно показать уведомление или что-то в браузере B.

Итак, имея диалоговое окно PrimeFaces в качестве окна чата и панель уведомлений PrimeFaces для отображения уведомлений, как я могу это сделать?

Я не могу использовать толчок PrimeFaces, поскольку они не работают со Glassfish.

Я узнал об ICEPush, это, кажется, хороший способ сделать это, но вещь о "рендеринге групп" помешала мне попробовать это. Как я могу обновить только ОДНОГО клиента, если ICEPush говорит о группах?

Должен ли я создать новую группу для каждого клиента?

Примерно так: B имеет группу "BwithA", которая обновляется, когда A отправляет сообщение B, и чат открывается, и группу "notificationsB", которая обновляется, когда окна чата закрываются?

Я не могу понять, как это сделать, потому что, даже используя группы таким образом, A должен сообщить B, что ему нужно обновить, и A не знает, должен ли B обновить диалоговое окно или панель уведомлений!

Я надеюсь, что вопрос ясен, потому что это не легко объяснить |

Заранее спасибо:)

1 ответ

Я не знаю, как профессиональный Java-программист решил бы вашу проблему, но когда я хотел создать чат, я использовал стандартный компонент Primefaces Remote Command и параметры обратного вызова для создания чата и отправки новых сообщений пользователю с сервера.

E сть p:remoteCommand компонент на веб-странице. Назначение компонента - получить последние сообщения от конкретного пользователя, когда вызывается прослушиватель действий. Новые сообщения передаются с сервера в функцию javascript (обработчик oncomplete событие компонента) через "параметры обратного вызова". Затем функция проверяет наличие каких-либо сообщений и добавляет их в окно чата.

Для получения дополнительной информации см. Как создать чат JSF с AJAX.

UPD: решение выше устарело. Теперь я бы использовал веб-сервисы JAX-RS или веб-сокеты для реализации чата. Также есть коммерческие решения для потоковой передачи данных в реальном времени: PubNub, Pusher и др.

Другие вопросы по тегам