3

我正在尝试向我的网络应用程序添加一些功能,例如“实时用户对用户”聊天(如 Facebook 的聊天)和实时通知系统。

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

A 向 B 发送消息。

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

那么,有一个 PrimeFaces Dialog 作为聊天窗口和一个 PrimeFaces NotificationBar 来显示通知,我该怎么做呢?

我不能使用 PrimeFaces 的推送,因为它们不适用于 Glassfish。

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

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

类似于:B 有一个“BwithA”组,当 A 向 B 发送消息并打开聊天时更新,还有一个“notificationsB”组,当聊天窗口关闭时更新?

我不知道该怎么做,因为即使以这种方式使用组,A 也必须告诉 B 他需要更新,而 A 不知道 B 是否必须更新对话框或 notificationBar !

我希望问题是清楚的,因为它不容易解释它|

提前致谢 :)

4

1 回答 1

1

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

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

有关更多信息,请参阅如何使用 AJAX 创建 JSF 聊天

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

于 2012-05-20T10:07:19.263 回答