spring ajax 长轮询,Ajax轮询和长轮询
缺点:Ajax轮询需要服务器有很快的处理速度与快速响应。long poll需要很高的并发,体现在同时容纳请求的能力。
一、轮询是在浏览器客户端实现的:
如果从后端获取数据成功则停止请求。
$(function(){
var code,status;
function getResult(){
var params = {
code: code,
operate: ‘什么操作TODO:’,
};
$.ajax({
type: ‘POST’,
url: “请求地址TODO:”,
data: params,
success: function(response) {
console.log(‘成功啦’);
//对成功数据的操作TODO:
clearInterval(status);
},
dataType: ‘json’,
timeout: 30*1000,// 超时时间
// 超时意味着出错了
error: function (error) {
console.log(‘失败啦’);
}
});
}
});
//获取code。如果code存在则调用轮询来获取数据
if(code){
status = setInterval(getResult, 1000);
}
setInterval()用法:
function direct() {
console.info( “time: “, ( new Date() ).getTime() );
}
function showlog() {
setInterval(direct(), 1000);
}
function showlog_2() {
setInterval( direct, 1000 );
}
function showlog_3() {
setInterval( function () {
direct();
}, 1000 );
}
function showlog_4() {
setInterval( “direct()”, 1000 );
}
// showlog(); //=> 执行一次
// showlog_2(); //=> 每隔 1000毫秒 执行一次
// showlog_3(); //=> 每隔 1000毫秒 执行一次
// showlog_4(); //=> 每隔 1000毫秒 执行一次
二、长轮询
ajax实现:在发送ajax后,服务器端会阻塞请求直到有数据传递或超时才返回。 客户端JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,客户端再次建立连接,周而复始
$(function() {
//定义code
var code;
//获取code TODO:
getStatusLong();
// 长轮询执行
function getStatusLong()
{
var data = {
operate: ‘操作TODO:’,
code: code,
};
$.ajax({
type: ‘post’,
url: url,
data: data,
success: function(response) {
if (response.error == 0) {
//成功的操作
}
},
dataType: ‘json’,
timeout: 10*1000,// 超时时间
// 超时意味着出错了
error: function (error) {
console.log(error);// timeout
// 立即发出请求
getOrderStatusLong();
}
});
}
});
服务端的实现:
//获取数据TODO:
//验证数据TODO:
switch ($operate) {
case ‘XXX’:
//长连接是实现
# 设置最大的执行时间
ini_set(‘max_execution_time’, ‘0’);// 服务器一直执行
while (true) {
$status =获取数据
if ($status) {
break;
}
}
return json_encode($result);
break:
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182105.html原文链接:https://javaforall.cn
相关文章
- 什么是Ajax以及ajax请求的步骤[通俗易懂]
- 【Spring Boot 20,孙鑫Java视频教程百度网盘
- AJAX读音_ajax怎么发音
- Ajax教程_ajax是服务器端动态网页技术
- 聊聊如何基于spring @Cacheable扩展实现缓存自动过期时间以及即将到期自动刷新
- spring官方文档 中文_Spring软件
- ajax长轮询 spring mvc,springmvc ajax 长轮询
- Spring Controller
- Spring的概述及Spring6快速入门
- Spring Boot的测试工具和技巧(一)
- Spring Boot 2.0 多图片上传加回显
- Spring MVC框架入门教程
- Spring错误:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.B详解编程语言
- app微信支付宝支付后台的插件模式+回调通过spring广播处理后续业务(已亲测可用)详解编程语言
- Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务详解编程语言
- Spring基于XML装配Bean
- spring架构利器:JFinal MySQL Spring(jfinalmysql)
- 使用Ajax实现MySQL数据库操作(ajax操作mysql)
- MySQL与Ajax的联动大大提高网站数据交互的效率(ajax和mysql连用)
- 使用Ajax与Oracle实现极致可靠性开发(ajax oracle)