【问题标题】:how to create a real-time application如何创建实时应用程序
【发布时间】:2012-02-13 04:20:31
【问题描述】:

使用 jsf2.0 和 PrimeFaces 3.0.RC2,我想制作包含我的系统请求的 <p:dataTable />,并且当一个用户持有请求时。我必须更新此请求的状态并更新所有其他用户的<p:dataTable /> 他们正在操作系统。 我怎样才能做到这一点?

假设该屏幕显示给 10 个用户,当其中一个更改状态并单击 更新 按钮时,应反映在所有用户的屏幕上。

如果有人在数据库中添加了新模型,这应该会出现。

我的意思是像电子邮件这样的例子

【问题讨论】:

    标签: java jakarta-ee jsf-2 primefaces


    【解决方案1】:

    其他用户无法被动地知道(通过 HTTP)什么时候服务器端发生了变化。您必须以某种方式主动轮询服务器并更新 UI 中的更改。您可以创建一个每 x 秒检查一次的计时器,或者在不同的浏览器事件上执行此操作(例如当用户不再使用浏览器窗口然后返回到它时)。

    最好的做法是创建一个刷新按钮,这样用户只会在他们真正需要时轮询新数据,这样您就不会过度读取数据库。

    【讨论】:

      【解决方案2】:

      您需要寻找所谓的pushreverse_ajaxcomet 技术。 PrimeFaces 通过 servlet 实现了这项技术,但仅适用于 Jetty 服务器。查看用户指南的第 6 章。

      另外,请查看cometD,这是一个成熟的项目,它以 javascript 和其他语言提供 Bayeux 协议的实现。该项目也使用 Jetty,但可以移植到其他符合 Servlet-3.0 的 servlet 容器。我在 GlassFish 服务器上运行它没有任何问题,但在客户端我有一个 dojo dataGrid 代替。您可以尝试通过Javascript集成到PrimeFaces dataTable,虽然我还没有做过,不知道这是否容易。

      【讨论】:

        【解决方案3】:

        PrimeFaces 的推送技术也适用于其他服务器,例如 Glassfish。 一个很好的示例,如何实现它: http://www.primefaces.org/showcase/push/counter.jsf

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多