【问题标题】:Push values from web server to client every 20ms (Java MVC)每 20 毫秒将值从 Web 服务器推送到客户端(Java MVC)
【发布时间】:2012-09-22 01:50:37
【问题描述】:

我是 Java 新手。我正在尝试在 MVC 行上写一些东西,其中我的 Web 服务器有一个 java 方法,它每 20 毫秒一次读取一行文本文件,我想每 20 毫秒向客户端发送(/推送)这个值(即在从 CSV 读取新行的同时)。 我读过这个http://en.wikipedia.org/wiki/Comet_%28programming%29 但是对这一切都很陌生,所以不能理解太多。推/拉/流如何工作以及在这里使用什么。此外,如果我应该在这里拉或推价值。我想我应该推送,否则服务器每 20 毫秒就会被如此多的拉取请求阻塞。 请建议。任何一段代码都会有很大的帮助。

【问题讨论】:

    标签: java model-view-controller servlets


    【解决方案1】:

    您无法将数据从 Web 服务器推送到客户端/浏览器,因为客户端计算机防火墙会阻止您尝试与计算机建立的任何类型的连接。浏览器总是需要从服务器中提取它。

    您可以通过使用来自 Javascript/Ajax 的长期 HTTP 连接使用反向 ajax 来实现这一点

    示例请参考以下链接

    http://today.java.net/pub/a/today/2007/03/22/developing-applications-using-reverse-ajax.html

    【讨论】:

    • 非常感谢您的回复。我最关心的是每 20 毫秒更新一次。 :(
    【解决方案2】:

    推送似乎是这里的最佳答案,尽管您可能会遇到一些问题,让一切都在 20 毫秒的往返行程中运行而不会落后,除非这一切都将在本地网络上运行。

    目前新兴的推送技术似乎是 HTML5 WebSockets。 如果您可以确保使用支持它的最新网络浏览器,我建议您使用它。

    Here 是构建简单 WebSocket 应用程序的示例。

    【讨论】:

    • 非常感谢您的回复。 Web 套接字听起来令人兴奋,但唯一的小问题是针对不同的 Web 服务器进行不同的设置。但它有帮助。能否请您也对today.java.net/pub/a/today/2007/03/22/… 进行一些说明。我的意思是你怎么看。
    • jfarcand.wordpress.com/2012/04/19/… 这表示Tomcat 和WebSphere 都不支持comet 或websockets .. 我需要Web 应用程序来处理这两者:'(
    • @user969107 第一篇文章已经超过 5 年了,所以有点过时了。第二篇文章中的表格将 Tomcat 7 列为支持 Comet 和 WebSockets - 我确信这是正确的。不过,看起来您可能对 WebSphere 不走运。如果您真的需要最小公分母,请尝试 Comet,特别是 Atmosphere 实现,因为我相信当不支持“真实”Comet 时它会退回到轮询。据我所知,JMS 对于 Web 浏览器客户端来说并不是一个好的解决方案。
    • 非常感谢 GreyBeardedGeek...看起来我终于找到了我想要的东西...请看一下..你可能也会觉得它很吸引人..(如果你没有来这个之前穿过:) ) ...html5rocks.com/en/tutorials/eventsource/basics ....请评论您对此有何看法..是的,这是一种单向交流..但对我的目的来说已经足够了..
    • 那里没有真正的魔法,除了一个正式的规范。它仍然是客户端轮询。而且我怀疑以这种方式获得 20 毫秒更新将很难甚至不可能,但祝你好运!
    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多