我使用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>
这是我的servlet doGet方法。
response.setContentType("text/event-stream");
PrintWriter out = response.getWriter();
int messagesSent = 0;
out.print("data: {" + messagesSent++ + "}\n\n");
out.flush();
out.close();
这工作正常,服务器默认大约每3秒发送一次更新。我想将此更改为每10分钟一次。可能吗?如果是,怎么样?
答案 0 :(得分:2)
在您的回复中,您需要发送retry:
超时(毫秒)
因此,您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对象的详细信息,请参阅HTML5Rocks.com。
答案 1 :(得分:0)
由于 ContentType ,上述解决方案无法与Chrome配合使用。
Chrome预计会:
response.setContentType("text/event-stream;charset=UTF-8");
使用Java Servlet作为事件服务器查找示例Google搜索&#34; milestonenext HTML5服务器发送事件示例&#34;