Servlet和ajax实现服务器推送

1:原理: Http连接是无状态的,请求过去就返回,所以;要实现http的长连接,实现服务器的想客户端推送,需要阻塞请求,等到数据更新然后处理返回给客户端,此时客户端自动请求服务端: js代码简单的为:

 

function sendMsg() {
	var jid = $("#jid").val();
	var tojid = $("#list").val();
	var content = $("#msg").val();

	$.post("chat", {
		jid : jid,
		tojid : tojid,
		content : content
	}, function(result) {

	});
}

$(document).ready(function() {
	
	/**
	 * 聊天窗口
	 */
	$.post("show", {
		eventName : 'msg'
	}, function(result) {
		$("#his").append(result).append("<br/>");
		showMsg();
	});
	
	/**
	 * 用户列表
	 */
	$.post("userlist",{eventName : 'userlist'}, function(result){
		var userlist = $("#userlist");
		userlist.append(result).append("<br/>");
	});
});

function showMsg() {
	$.post("show", {
		eventName : 'msg'
	}, function(result) {
		$("#his").append(result);
		showMsg();
	});
}

 我们以聊天程序为列:

初始化的时候 客户端发一次show请求到servlet,服务器阻塞wait改请求,然后等到客户端发送消息;在那个servlet中释放notifyall改阻塞,继续下执行处理-----。

你可能感兴趣的:(servlet)