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改阻塞,继续下执行处理-----。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值