1.新建servelet,然后进行编码,最后编码完后的源码如下:
package com.heetian.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SSEEchoServlet
*/
@WebServlet("/SSEEchoServlet")
public class SSEEchoServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/event-stream");//设置事件流
response.setCharacterEncoding("UTF-8");//设置编码
//获取最新时间并返回
PrintWriter writer = response.getWriter();
String string = new Date().toString();
System.out.println(string);
// send SSE
writer.write("data: " + string + "\n\n");
try { //设置间隔时间
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.新建index.html文件,然后进行编码。编码后的文件如下:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic SSE Example</title>
</head>
<body>
<pre id="x">初始化...</pre><!--之所以用pre,没用div或p,是为了确保(包括换行的数据能够以它被接收时的格式呈现,而不会被修改或格式化。)-->
<script>
var es = new EventSource("SSEEchoServlet");//创建EventSource对象,将要连接的URL作为它唯一的参数。这里是连接到basic_sse.php
es.addEventListener("message", function(e){
document.getElementById("x").innerHTML += "\n" + e.data;//运态修改页面内容。
},false);
</script>。
</body>
</html>
3. 运行后,可以看到浏览器中不停输出时间。效果如下:
初始化...
Sun Nov 23 13:56:22 CST 2014
Sun Nov 23 13:56:27 CST 2014
Sun Nov 23 13:56:31 CST 2014
Sun Nov 23 13:56:35 CST 2014
Sun Nov 23 13:56:39 CST 2014
Sun Nov 23 13:56:43 CST 2014
Sun Nov 23 13:56:47 CST 2014
Sun Nov 23 13:56:51 CST 2014
Sun Nov 23 13:56:55 CST 2014
Sun Nov 23 13:56:59 CST 2014
Sun Nov 23 13:57:03 CST 2014
。
说明:
1. 本系列是根据《Data Push Apps with HTML5 SSE》一书的源码修改而成,该书源码为PHP版,本人在学习过程中,根据个人需求及理解,修改成了JAVA版。所以有关例子的细节,请参阅该书。
2.本系列工程使用maven管理。如果对maven不了解,请自行google或baidu。或者自行将maven工程转化为普通java工程,项目所依赖jar包,请参见pom.xml。
3.本系列博客为原创,谢绝转载。