Servlets 从servlet发送实时数据

Servlets 从servlet发送实时数据,servlets,web-applications,data-stream,Servlets,Web Applications,Data Stream,我正在开发一个web应用程序,在这个应用程序中,我有一个恒定的数据流,在Javaservlet中每隔5秒左右接收一次(从另一个应用程序编写的文件中读取)。我想将这些数据推送到一个html页面上,并用javascript读取它,这样我就可以在d3库中绘制它的图形 目前,我正在使用一个javascript函数,它每5秒调用servlet的“doGet”函数。我担心这会产生大量开销,或者可能会更有效地执行。 我知道也可以从servlet中运行“response.setIntHeader(“Refres

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

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

还有其他更好的方法吗


提前感谢您的帮助

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

如果您可以处理几秒钟的通知延迟,那么短轮询非常简单,下面是一个基本示例:

在页面加载时,在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 
      }
   });
 }

检查Comed项目:谢谢,我还找到了WebSocket,供其他可能感兴趣的人使用。虽然它不能在所有服务器上运行。请看: