1

我正在研究 servlet,但遇到了问题。SSE 可以在 Firefox 上正常工作,但不能在 Chrome/Safari 上工作。PHP 中的类似代码可以在上述所有三种浏览器中流畅运行。如何解决问题?谢谢!!

这是我的 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...";
        }

顺便说一句,我正在使用 Glassfish。

4

1 回答 1

1

您可能需要修改行 out.print("data: " + new Date()); 像这样 out.print("data:" + new Date() + " \n\n"); 浏览器通常会在 SSE 数据消息的末尾找不到双“\n”。

于 2013-05-31T09:01:21.300 回答