服务器已发送事件无法在Google Chrome中使用

这是我的服务器JSP代码“Server_Date.jsp”

 

这是我的客户端jsp页面“Client_Serverdate.jsp”

      Insert title here   

Getting server updates

if(typeof(EventSource)!=="undefined") { var source=new EventSource("Server_Date.jsp"); source.addEventListener("message", function(event) { document.getElementById("result").innerHTML = event.data; }, false); } else { document.getElementById("result").innerHTML="Sorry, your browser does not support server-sent events..."; }

请帮助我这个代码在Mozilla Firefox中工作正常,歌剧但不在Google Chrome中工作我用18.x和20.x检查过

它将转到我用print语句检查的服务器页面,但它没有到达“document.getElementById(”result“)行.innerHTML = event.data;”

谢谢…

对于一个你正在调用函数begin() ,虽然这不应该是这里的问题。

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

我曾经有同样的问题。 作为服务器部分,我使用PHP,但我想它的工作方式相同。 为我修复的是添加ob_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"%> 

没有提到服务器端的UTF-8,所以在setContentType中添加charset = UTF-8之后就可以了

 response.setContentType("text/event-stream;charset=UTF-8"); 

感谢您的努力回答我的问题