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:
}
spring ajax 长轮询,Ajax轮询和长轮询相关推荐
- HTTP长链接和ajax轮询以及websocket原理理解
HTTP的生命周期通过 Request 来界定,也就是一个 Request 一个 Response ,那么在 HTTP1.0 中,这次HTTP请求就结束了. 在HTTP1.1中进行了改进,使得有一个k ...
- java ajax轮询_ajax轮询(ajax轮询实现聊天)
最近一直在研究ajax长轮询连实现即时通信,但是到底是个怎么轮询法?难道. 一般最原始的作法就是在客户端搞个定时器一直向后台请求,而ajax的长轮询与一般的http连接不一样,它发送的是长连接,比如说 ...
- 基于PHP实现一个简单的在线聊天功能(轮询ajax )
基于PHP实现一个简单的在线聊天功能(轮询ajax ) 一.总结 1.用的轮询ajax 二.基于PHP实现一个简单的在线聊天功能 一直很想试着做一做这个有意思的功能,感觉复杂的不是数据交互和表结构,麻 ...
- 《深入浅出DPDK》读书笔记(八):网卡性能优化(异步中断模式、轮询模式、混和中断轮询模式)
本文内容为读书笔记,摘自<深入浅出DPDK> 82.DPDK的轮询模式 <DPDK PMD( Poll Mode Driver)轮询模式驱动程序> DPDK采用了轮询或者轮询混 ...
- Spring MVC和JQuery用于Ajax表单验证
在本教程中,我们将看到如何使用Ajax和Spring MVC和JQuery在服务器端验证表单. Spring MVC为通过注释驱动的配置采用Ajax提供了非常方便的过程. 我们将使用此注释驱动的配置以 ...
- Spring MVC Controller与jquery ajax请求处理json
在用 spring mvc 写应用的时候发现jquery传递的[json数组对象]参数后台接收不到,多订单的处理,ajax请求: var cmd = {orders:[{"storeId&q ...
- 鸿蒙策略是虚拟盘吗,算上模拟炒股,碰股票已经快三年了,以前在模拟盘,一个月一两次操作,长的时候两个月等一轮,股票买进来,硬是等一个涨再抛出去... - 雪球...
来源:雪球App,作者: 李无伤,(https://xueqiu.com/1943866017/177699610) 算上模拟炒股,碰股票已经快三年了,以前在模拟盘,一个月一两次操作,长的时候两个月等 ...
- 火狐 谷歌ajax 失效,如何解决ajax在google chrome浏览器上失效.pdf
如如何何解解决决ajax在在google chrome浏浏览览器器上上失失效效 今天闲着没事做个一个ajax小练习,困扰了我很长时间,我写的ajax代码在ie.360.火狐浏览器上运行都是正常 的,而 ...
- c mvc ajax请求,springMVC的ajax请求
关于spring MVC 的ajax请求 今天在使用spring MVC 的时候遇到了一个ajax请求的问题. 我的后台方法是 @RequestMapping("/XXXX/{XXX}&qu ...
最新文章
- 如何自行绕制所需要的2.2uH的电感?
- Swoole找不到telnet命令
- GRPC在网页前端的使用
- Java 11:String类中的新方法
- Go实现简单TCP扫描器
- Docker从入门到精通 项目实例示范
- Shell基础(一):Shell基础应用、简单Shell脚本的设计、使用Shell变量、变量的扩展应用...
- java语言程序设计(梁勇)
- WIN10 SVN图标不显示问题
- 四川跃恒云启网络科技有限公司:拼多多推广花费高怎么调整
- 苹果Mac电脑怎么能彻底的卸载软件?
- CocosCreator中游戏摇杆的实现
- 读《深陷平庸的SaaS如何自救?》有感
- Linux下gmtime、gmtime_r、localtime、localtime_r函数详解
- 2012年CCS云计算高峰论坛
- BUUCTF:[SWPU2019]你有没有好好看网课?
- 吴恩达机器学习(第2周--Computing Parameters Analytically)
- PHP 获取微视无水印源地址_最新PHP解析抖音获取无水印视频代码
- H3C服务器出厂系统密码,h3c服务器网关口默认密码
- php qq头像程序,PHP教程:php获取QQ头像并显示的方法
热门文章
- SCCM 2016 使用PXE 部署操作系统(五)
- linux上杀死进程命令:kill、pkill、killall杀死进程
- Linux中怎样强制杀死进程
- 用Visual Studio Code配合Linux子系统进行C/C++开发(调试篇)
- usb_由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件......
- 企鹅电竞停步,虎牙也难行
- Oracle 序列详解(sequence)
- oracle 序列缓存的作用,Oracle序列sequence 深入理解
- 在web前端的路上,新手就业形势严峻,如何绝地求生?
- 减可变规模算法—中值和选择问题