【转】轮询、长轮询、iframe长连接、web socket

时间:2022-12-06 22:48:27

引自:http://www.cnblogs.com/AloneSword/p/3517463.html

http://www.cnblogs.com/wei2yi/archive/2011/03/23/1992830.html

代码示例:

1.iframe实现长连接

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<script type="text/javascript" src="jquery-1.9.1.js"></script> <script>
function loadData(){
$('#logs').append(new Date());
}
</script>
<body>
<iframe id="frame" name="polling" src="/myweb/TestLongPolling"></iframe>
<div id="logs"></div>
</body>
</html>
package bookstore;

import java.io.IOException;
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 TestLongPolling
*/
@WebServlet("/TestLongPolling")
public class TestLongPolling extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public TestLongPolling() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request,response);
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
int i = 0;
boolean boo = true;
String result = null;
while(boo){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
result = "hello I'm server"+i;//要打印到前台的字符
//sendMsg(result,response,"msg");//msg是test.jsp中的那个js方法的名称 response.setContentType("text/html;charset=GBK");
response.getWriter().write(
"<script type='text/javascript'>parent.loadData()</script>");
response.flushBuffer(); i++;
if(i==10){
boo = false;
}
}
} }

2.web socket

待续....