điều này thực hiện thủ thuật.
HTML
<!DOCTYPE html>
<html>
<body onload ="registerSSE()" >
<script>
function registerSSE()
{
alert('test 1');
var source = new EventSource('http://frewper:8080/hello/sse');
alert('Test2');
source.onmessage=function(event)
{
document.getElementById("result").innerHTML+=event.data + "<br />";
};
/*source.addEventListener('server-time',function (e){
alert('ea');
},true);*/
}
</script>
<output id ="result"></output>
</body>
</html>
Servlet:
import java.io.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class sse extends HttpServlet
{
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
try
{
System.out.println("SSE Demo");
response.setContentType("text/event-stream");
PrintWriter pw = response.getWriter();
int i=0;
while(true)
{
i++;
pw.write("event: server-time\n\n"); //take note of the 2 \n 's, also on the next line.
pw.write("data: "+ i + "\n\n");
System.out.println("Data Sent!!!"+i);
if(i>10)
break;
}
pw.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
doPost(request,response);
}
}
Bạn đang tìm kiếm tính năng HTML5 "Sự kiện được máy chủ gửi" - phải không? http://today.java.net/article/2010/03/31/html5-server-push-technologies-part-1 – Robert
có .. và sự kiện sẽ được tạo bằng cách sử dụng một servlet java – Chris
Servlets chỉ có thể trả lời một Yêu cầu HTTP. Chúng không được thiết kế để giữ kết nối mở. Bạn có thể làm điều đó nhưng tôi cho rằng máy chủ của bạn sẽ chạy rất nhanh trong các chuỗi công việc nếu bạn làm như vậy. – Robert