87,910
社区成员
发帖
与我相关
我的任务
分享
/**
* Servlet implementation class CometServlet
*/
public class CometServlet extends HttpServlet implements CometProcessor{
private static final long serialVersionUID = 1L;
// private HttpServletRequest request;
private String word = "Hello World" ;
/**
* @see HttpServlet#HttpServlet()
*/
public CometServlet() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void event(CometEvent e) throws IOException, ServletException {
// TODO Auto-p method stub
if(e.getEventType() == EventType.BEGIN){
HttpServletResponse response = e.getHttpServletResponse();
RadomNumber ran = new RadomNumber(response);
new Thread(ran).start();
} else if(e.getEventType() == EventType.READ){
}
}
private class RadomNumber implements Runnable{
private ServletResponse connection;
RadomNumber(ServletResponse response){
this.connection = response;
}
@Override
public void run() {
// TODO Auto-generated method stub
String ran = null;
while (word != null) {
PrintWriter out = null;
ran = String.valueOf(Math.random());
if (!ran.equals(word)) {
try {
out = connection.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.write(word);
out.println();
out.flush();
try {
Thread.sleep(5000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
word = ran;
}
}
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
<script>
function storeCaret (textEl) {
if (textEl.createTextRange)
textEl.caretPos = document.selection.createRange().duplicate();
}
var http_request = false;
function CometEx(text) {
if(window.XMLHttpRequest){//Mozilla browser
http_request = new XMLHttpRequest();
if(http_request.overrideMineType){//set MiME type
http_request.overrideMineType('test/xml');
}
}else if(window.ActiveXObject){//IE browser 不过好像没用,不能在IE上显示.
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
http_request = new ActiveXObject(Microsoft.XMLHTTP);
}catch(e){}
}
}
if(!http_request){//can not creat HttpRequest
window.alert("can not creat HttpRequest");
return false;
}
//var request = new XMLHttpRequest();
//request.open("GET", 'http://localhost:8080/MyComet/CometServlet', true);
http_request.open("GET", 'http://localhost:8080/MyComet/CometServlet', true);
http_request.onreadystatechange = function() {
if (http_request.readyState == 3 && http_request.status == 200) {
//alert(request.responseText);
text.value = http_request.responseText;
}
};
http_request.send(null);
}
</script>
</head>
<body>
<FORM NAME="aForm">
<TEXTAREA NAME="aTextArea" ROWS="5" COLS="80" WRAP="soft" ONSELECT="storeCaret(this);" ONCLICK="storeCaret(this);" ONKEYUP="storeCaret(this);"> value: </TEXTAREA>
<BR>
<INPUT TYPE="button" VALUE="Go!" ONCLICK="CometEx(this.form.aTextArea);">
</FORM>
</body>
</html>