1

我正在尝试在没有客户端(浏览器)请求更新的情况下将数据从服务器推送到客户端。

我的应用程序基于 JBoss 服务器上的 JSF2.0(带有 JSP)和 RF3.3。

我已经通过许多链接来尝试了解如何实现它。长轮询、捎带、服务器端轮询等术语我都理解。

我想它可以使用带有大气的 COMET 来完成(我认为它不适用于 JBoss),但我不确定。主要问题是我几乎想不出一个起点,因为我没有在网上获得任何类型的代码教程或演示代码。

此外,起点本身并不是很清楚,我应该从哪里开始,以及在实现所需功能的过程中我需要什么。

谁能指导我这个问题。我对这个话题很迷茫。

一般用例场景是用户正在浏览我的应用程序中的某个网页,突然我需要在页面上发出通知或更新一个值,而无需用户发出相同的请求。

4

2 回答 2

1

如果您愿意使用 RF 4.0.X,有一个示例说明如何使用 ajax 推送。你可以在这里找到一个例子

http://anonsvn.jboss.org/repos/richfaces/branches/4.0.0.CR1/examples/push-demo/src/main/webapp/chat.xhtml
http://anonsvn.jboss.org/repos/richfaces/branches/4.0.0.CR1/examples/

如果您必须坚持使用 RF 3.3,您可以在此处找到相关示例作为起点

http://anonsvn.jboss.org/repos/richfaces/branches/community/3.3.X/samples/
于 2012-04-07T16:31:50.347 回答
0

RF4.2 确实使这变得非常简单,但我发现如果您不想要 RichFaces,通过 jQuery 轮询一个特殊的 servlet 也同样有效。

// Javascript part
jQuery.ajax({
    url : "/poll?sessionKey=" + sessionKey,
    dataType : "text",
    success : function(data) {
        // ... Do your thing to depending on the contents of data.
    },
    error : function(xhr, ajaxOptions, thrownError) {
        // ... Oops, something went wrong.
    }
});

// Server part
@WebServlet(urlPatterns = "/poll")
public class pollServlet implements Servlet {
}

轮询非常便宜,您可以每隔几秒钟进行一次,而不会产生太大影响。另一个好处是您可以监控浏览器窗口是否仍然打开。

于 2012-04-07T20:38:30.407 回答