文档章节

java ajax长轮询

大笨淡
 大笨淡
发布于 2015/02/28 15:44
字数 359
阅读 102
收藏 0

长轮询就是客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。        

前端代码:

$.ajax({

type: "post", //AJAX请求类型  

               url: "massGraphic/selectCode.do", //请求url  

               cache: false,  //无缓存  

               timeout: 1000 * 300,  //AJAX请求超时时间为30秒  

               data: { "time": 300, "scene_id": data.scene_id }, //参数time时间为最多等待(后台保持)时间(60秒无论是否有数据立即返回),单位为秒。userID判断诗句是否为新数据的标识  

               success: function (data) {  

                if(data==0){

                layer.alert("发送预览成功!",1);

                }else{

                layer.alert("300秒内没有扫描 自动关闭!");

                }

                $("#wx-num").hide();

                flag = true;

               }

});

后端代码:

@RequestMapping("selectCode")

public void selectCode(Integer time,Integer scene_id,HttpSession session,HttpServletResponse response) throws Exception{

User currentUser = (User) session.getAttribute("currentUser");

Code code  = new Code();

code.setUser_id(currentUser.getUser_id());

code.setScene_id(scene_id);

int json = 1;

Integer i=0;

while(true){

Thread.sleep(3000);//停留三千毫秒(3秒)  

             i++;  

             if(i<time)

             {

            json = massInfoService.selectCode(code);//当没有查询到这个值得时候就说明客户扫描二维码成功了 返回0

            if(json==0){

            break;

            }

             }

             else

             {

            break;

             }

}

ResponseUtil.write(response, json);

}


长轮询比普通轮询优点在于在无消息的情况下不会频繁的请求,耗费资源小。        

希望我写的对你有帮助~

© 著作权归作者所有

共有 人打赏支持
大笨淡
粉丝 0
博文 4
码字总数 1241
作品 0
南京
PHP监控后台程序 生成进度条

// 这里的页面采用ajax轮询的方式 php获取java生成进度条文件。 //后台处理采用java 生成进度条文件。 后台监控如下: 启用了3个线程 几乎把服务器给榨干了。 [root@localhost wcms]# ps -e...

大灰狼wow
2014/04/10
0
0
Web端服务器推送技术原理分析

1 背景 “服务器推送技术”(ServerPushing)是最近Web技术中最热门的一个流行术语。它是继“Ajax”之后又一个倍受追捧的Web技术。“服务器推送技术”最近的流行跟“Ajax ”有着密切的关系。...

wersdffg
2015/02/11
0
1
webqq更新——采用反向AJAX实现在线人员上下线模拟

原文: http://www.abigdreamer.com/mywork/webqq-update-online-reverse-ajax-implementation-off-the-assembly-line-simulation.html 本blog已转移到造梦师http://www.abigdreamer.com,欢......

暗之幻影
2015/09/23
0
0
Comet4J AJAX 服务器推送框架

Comet4J(Comet for Java)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。 功能特性 推送消息广播。 推送定向消息。 ...

liaolzy2
2015/07/28
0
1
【转】Comet:基于 HTTP 长连接的“服务器推”技术

“服务器推”技术的应用 传统模式的 Web 系统以客户端发出请求、服务器端响应的方式工作。这种方式并不能满足很多现实应用的需求,譬如: 监控系统:后台硬件热插拔、LED、温度、电压发生变化...

晨曦之光
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 使用 Fail2Ban 来限制登录尝试

什么是 Fail2Ban? 我们需要在我们网站中防止密码的暴利破解。Fail2Ban 是一个 Python 的应用来查看日志文件,使用的是正则表达式,同时还可以与Shorewall (或者 iptables)直接工作来来启用...

honeymose
4分钟前
0
0
日期和时间API - 读《Java 8实战》

日期与时间 LocalDate 创建一个LocalDate对象并读取其值 // 根据年月日创建日期LocalDate date1 = LocalDate.of(2014, 3, 18);// 读取System.out.println(date1.getYear()); // 2014Sys...

yysue
4分钟前
0
0
8月15日任务

8月15日任务 Memcached命令行 • telnet 127.0.0.1 11211 • set key2 0 30 2 ab STORED get key2 VALUE key2 0 2 ab END 实例: [root@localhost 02]# telnet 127.0.0.1 11211-bash: te......

寰宇01
17分钟前
0
0
LNMP架构(Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间)

Nginx访问日志 1.打开配置文件,搜索log_format vim /usr/local/nginx/conf/nginx.conf 2.访问日志常用变量含义 $remote_addr : 客户端IP(公网IP) $http_x_forwarded_for : 代理服务器的IP ...

蛋黄_Yolks
17分钟前
0
0
lombok 不用再写pojo的getset

java实体类不写get/set方法 1、下载地址https://projectlombok.org/download Myeclipse、eclipse安装lombok Lombok是一种Java实用工具,可以帮助开发人员消除Java的冗长,具体看lombok的官网...

木之下
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部