【问题标题】:Sending live-data from a servlet从 servlet 发送实时数据
【发布时间】:2013-06-06 14:49:03
【问题描述】:

我正在开发一个 web 应用程序,其中我有一个恒定的数据流,每 5 秒左右在 java servlet 中接收一次(从另一个应用程序写入的文件中读取)。我想将这些数据推送到一个 html 页面并用 javascript 读取它,这样我就可以在 d3 库中绘制它。

目前我正在使用每 5 秒调用一次 servlet 的“doGet”函数的 javascript 函数。我担心这会产生很多开销,或者它可以更有效地执行。 我知道也可以运行“response.setIntHeader("Refresh", 5);"从小服务程序。

还有其他更好的方法吗?

提前感谢您的帮助!

【问题讨论】:

标签: servlets web-applications data-stream


【解决方案1】:

短轮询可能是目前解决您描述的问题的最常用方法

如果你能应付几秒钟的通知延迟,那么短轮询真的很简单,这是一个基本的例子:

在页面加载时,在你的 JS 中调用它:

setInterval(checkFor, 30000);

上面将每 30 秒调用一次函数 checkFor()(显然,您可以将 30 秒更改为任意时间长度 - 只需根据您希望用户更新的频率调整上述行中的 30000)。

然后,在您的 checkForNotifications 函数中,只需对您的服务器进行 ajax 调用,询问是否有任何更新 - 如果服务器说是,则只需使用 JS 显示警报,如果没有(这将是大多数时间可能)然后什么都不做:

   function checkFor(){
    $.ajax({
    url: "your/server/url", 
    type: "POST",
    success: function( notification ) {
        //Check if any notifications are returned - if so then display alert
    },
    error: function(data){
        //handle any error 
      }
   });
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2013-05-27
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多