从servlet发送实时数据

时间:2013-06-10 20:44:35

标签: servlets web-applications data-stream

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

目前我正在使用调用' doGet'的javascript函数。 servlet的功能每5秒钟一次。我担心这会产生很多开销,或者说它可以更有效地执行。 我知道它也可以运行" response.setIntHeader(" Refresh",5);"来自servlet。

还有其他更好的方法吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

如果你可以应对通知中的几秒延迟,那么短轮询非常简单,这是一个基本的例子:

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

setInterval(checkFor, 30000);

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

然后,在checkForNotifications函数中,只需对服务器进行ajax调用,询问是否有任何更新 - 如果服务器显示yes,则只显示使用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 
      }
   });
 }