回叙很多的朋友都会在使用eventsource是遇到一些问题:
今天,就总结一下eventsource的使用:
eventsource不同于websocket,它也是一个长轮询,只是不需要开发者自己写轮询了
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <div id="t"></div> <script type="text/javascript"> var url="source.jsp"; if(EventSource) { var source=new EventSource(url); source.onmessage = function(event) { document.getElementById("t").innerHTML += event.data + "<br />"; }; } else { document.getElementById("t").innerHTML = "Sorry, your browser does not support server-sent events..."; } </script> </body> </html>
<%@page language="java" contentType="text/event-stream; charset=utf-8" pageEncoding="utf-8"%> <%@page import="java.util.Date"%> <% response.setHeader("pragma", "no-cache"); response.setHeader("expires", "0"); response.setHeader("Cache-Control", "no-cache"); System.out.println("data: " + new Date()); out.println("data: " + new Date());//这边最需要注意:要用两个换行,因为在eventsource读取数据是,会根据换行判断格式 out.println(); out.flush(); %>