Servlets 服务器使用servlet发送事件

Servlets 服务器使用servlet发送事件,servlets,server-sent-events,Servlets,Server Sent Events,我使用servlet作为服务器向jsp客户端发送更新(使用HTML5 SSE)。这是我的jsp代码 <script type="text/javascript"> if(typeof(EventSource)!=="undefined") { var source=new EventSource("server"); source.onmessage=function(event) { document.g

我使用servlet作为服务器向jsp客户端发送更新(使用HTML5 SSE)。这是我的jsp代码

<script type="text/javascript">

    if(typeof(EventSource)!=="undefined")
      {
      var source=new EventSource("server");
      source.onmessage=function(event)
        {
        document.getElementById("news1").innerHTML+=event.data + "<br />";
        };
      }
    else
      {
      document.getElementById("news1").innerHTML="Sorry, your browser does not support server-sent events...";
      }
      </script>

这工作正常,默认情况下,服务器大约每3秒发送一次更新。我想把它改为每10分钟一次。可能吗?如果是,如何发送?

在您的响应中,您需要发送
重试:
,超时时间以毫秒为单位

因此,您的
doGet
应该如下所示

response.setContentType("text/event-stream");   

PrintWriter out = response.getWriter();  

int messagesSent = 0;  

out.print("retry: 600000\n"); //set the timeout to 10 mins in milliseconds
out.print("data: {" + messagesSent++ + "}\n\n");  
out.flush();  
out.close();

有关EventSource对象的更多信息,请参阅。

上述解决方案不适用于Chrome,因为ContentType

Chrome预计:

response.setContentType("text/event-stream;charset=UTF-8");

通过谷歌搜索“milestonenext HTML5 Server Sent Events sample with Java Servlet as Event Server”(以Java Servlet作为事件服务器)找到一个示例。

您是否尝试过不关闭服务器端的流,并每10分钟向该流发送一条消息?
response.setContentType("text/event-stream;charset=UTF-8");