Java 服务器发送的事件在Google Chrome中不起作用

Java 服务器发送的事件在Google Chrome中不起作用,java,html,jsp,dom-events,server-sent-events,Java,Html,Jsp,Dom Events,Server Sent Events,这是我的服务器JSP代码“server\u Date.JSP” 这是我的客户端jsp页面“client\u Serverdate.jsp” 在此处插入标题 获取服务器更新 if(typeof(EventSource)!=“未定义”) { var source=neweventsource(“Server_Date.jsp”); source.addEventListener(“消息”,函数(事件){ document.getElementById(“结果”).innerHTML=

这是我的服务器JSP代码“server\u Date.JSP”


这是我的客户端jsp页面“client\u Serverdate.jsp”


在此处插入标题
获取服务器更新
if(typeof(EventSource)!=“未定义”)
{     
var source=neweventsource(“Server_Date.jsp”);
source.addEventListener(“消息”,函数(事件){
document.getElementById(“结果”).innerHTML=event.data;
},假);
}
其他的
{
document.getElementById(“结果”).innerHTML=“对不起,您的浏览器不支持服务器发送的事件…”;
}
请帮助我,这段代码在Mozilla Firefox、Opera中运行良好,但在Google Chrome中不起作用(我也用18.x和20.x进行了检查)


它将进入我用print语句检查过的服务器页面,但它不会进入document.getElementById(“结果”).innerHTML=event.data行

对于一个调用未定义的函数的函数
begin()
,尽管这不应该是这里的问题


Chrome开发控制台是否显示任何错误?它应该至少显示一个。因为begin函数。“网络”选项卡是否显示到Server_Date.jsp的流量?

我以前也有同样的问题。作为服务器部分,我使用了PHP,但我想它的工作原理是一样的。对我来说,修复它的方法是添加
ob\u flush()
。现在,我不知道它在您的语言中应该是什么,但也许它可以帮助您朝着正确的方向发展。

我遇到了同样的问题,我通过在servlet末尾添加一个换行符来解决它。 像这样:

response.setContentType("text/event-stream;charset=UTF-8");
response.addHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("data: " + new Date());
out.println();
out.flush();
out.close();
问题解决了

解决方案:

页面编码问题:客户端使用UTF-8编码

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

感谢大家努力回答我的问题

可能是chrome的新行(“\n”)有问题。请尝试不使用“\n”。@RaviJain我也签出了\n。如果我在source.addEventListener()之前发出警报(),但在函数内部它不发出提示。。。plz帮助meChrome开发控制台显示任何错误?不,chrome控制台中没有错误。。。它正在调用Server_Date.jsp,但该文件返回的数据没有打印在Client_Serverdate.jsp文件中ob_flush()的替代文件中,在jsp中是out.flush(),但它不能仅与chrome一起工作这是我的问题。。。帮助我。。。
response.setContentType("text/event-stream;charset=UTF-8");
response.addHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter();
out.println("data: " + new Date());
out.println();
out.flush();
out.close();
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
response.setContentType("text/event-stream;charset=UTF-8");