文档章节

java ajax长轮询

大笨淡
 大笨淡
发布于 2015/02/28 15:44
字数 359
阅读 107
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
13分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
14分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
15分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
19分钟前
2
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部