JSF + AJAX推送:实时聊天/通知系统

时间:2012-04-22 17:38:22

标签: jsf java-ee primefaces push icepush

我正在尝试为我的webapp添加一些功能,例如“实时用户到用户”聊天(如Facebook的聊天)和实时通知系统。

让我们考虑一下这种情况: 我们有两个用户,A和B.

A向B发送消息。

如果在B的浏览器上打开B和A之间的聊天窗口,我们会更新它,在B的浏览器上显示新消息。 如果窗户没有打开,我们需要在B的浏览器上显示通知或其他内容。

因此,将PrimeFaces对话作为聊天窗口和PrimeFaces NotificationBar来显示通知,我该怎么做?

我无法使用PrimeFaces,因为他们不使用Glassfish。

我已经发现了ICEPush,这似乎是一种很好的方法,但是关于“渲染组”的事情阻止了我尝试它。 如果ICEPush谈论群组,我如何只更新一个单一的客户?

我应该为每个客户创建一个新组吗?

像: B有一个“BwithA”组,当A向B发送消息并打开聊天时更新,以及在聊天窗口关闭时更新的“notificationsB”组?

我无法知道如何做到这一点,因为即使以这种方式使用群组,A也必须告诉B他需要更新,并且A不知道B是否必须更新对话框或notificationBar !

我希望这个问题很清楚,因为解释它并不容易。

提前致谢:)

1 个答案:

答案 0 :(得分:1)

我不知道专业的Java程序员如何解决您的问题,但是当我想创建聊天时,我使用标准的Primefaces远程命令组件和回调参数来创建聊天并向用户发送新消息服务器

网页上有p:remoteCommand个组件。该组件的目的是在调用操作侦听器时从特定用户获取最新消息。新消息通过“回调参数”从服务器传递到javascript函数(组件的oncomplete事件的处理程序)。然后,该功能检查是否有任何消息,并将它们附加到聊天框中。

有关详细信息,请参阅How to create JSF chat with AJAX

UPD:上述解决方案已过时。现在我将使用JAX-RS Web服务或Web套接字来实现聊天。还有一个实时数据流的商业解决方案: PubNub Pusher 等。