我正在研究servlet但遇到了问题。 SSE适用于Firefox,但无法与Chrome / Safari配合使用。 PHP中的类似代码可以在上面提到的所有三种浏览器中顺利运行。如何解决问题? THX !!
这是我的servlet代码:
response.setContentType("text/event-stream;charset=UTF-8");
response.addHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.print("data: " + new Date());
out.flush();
out.close();
这是我的JS代码:
if (typeof(EventSource) !== "undefined")
{
var source = new EventSource("sse");
source.onmessage = function(event)
{
document.getElementById("result").innerHTML += event.data + "<br />";
alert("ok");
};
}
else
{
document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
}
BTW,我正在使用Glassfish。
答案 0 :(得分:1)
您可能想要修改该行 out.print(“data:”+ new Date()); 像那样 out.print(“data:”+ new Date()+“\ n \ n”); 浏览器通常卡在SSE数据消息的末尾没有找到双“\ n”。