3

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

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

还有其他更好的方法吗?

在此先感谢您的帮助!

4

1 回答 1

0

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

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

在页面加载时,在您的 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 
      }
   });
 }
于 2014-05-03T09:40:46.447 回答