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 и др.