servlet服务器发送的事件不适用于Chrome / Safari

时间:2013-05-18 12:36:33

标签: html5 jsp servlets server-sent-events

我正在研究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。

1 个答案:

答案 0 :(得分:1)

您可能想要修改该行 out.print(“data:”+ new Date()); 像那样 out.print(“data:”+ new Date()+“\ n \ n”); 浏览器通常卡在SSE数据消息的末尾没有找到双“\ n”。