前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何减轻ajax定时触发对服务器造成的压力和带宽的压力?ajax-长轮训

如何减轻ajax定时触发对服务器造成的压力和带宽的压力?ajax-长轮训

作者头像
生活创客
发布2018-01-30 17:47:23
7080
发布2018-01-30 17:47:23
举报
文章被收录于专栏:技术记录技术记录

AJAX长轮询的方法来解决频繁对后台的请求,进一步减小压力

在实现过程发现AJAX的多次请求会出现多线程并发的问题又使用线程同步来解决该问题

个人对ajax长轮询的一点愚见

ajax请示后台时,后台程序并没有立即返回信息而是挂起,当符合条件时才会返回信息

从ajax定时请求变成轮询模式:

代码语言:javascript
复制
function getRtmMsg(show){  
        $.ajax({  
           type:"POST",  
           url:"rtmAction!getMsg.action",  
           data:"show="+show,  
           success: function(msg){  
             if(msg!=null){  
                bottomRight();  
                getRtmMsg("0");  
             }  
           }  
        });  
    }  

后台代码:

代码语言:javascript
复制
/** 
 * 实时消息Action 
 * @author wangwei 
 * May 23, 2013 
 */  
public class RtmAction  extends ActionSupport{  
      
    HttpServletResponse response = ServletActionContext.getResponse();  
    HttpServletRequest request = ServletActionContext.getRequest();  
      
    private static final ThreadLocal threadLocal = new ThreadLocal();  
    private static Object lock = new Object();  
    public void getMsg(){  
        String show = request.getParameter("show");  
        if("0".equals(show)){  
            RtmTemplate.cjzxShow = false;  
        }  
        try {  
            //多线程同步解决并发问题  
            synchronized(lock){  
                while(!RtmTemplate.cjzxShow){  
                    System.out.println("检测中。。。。");  
                    Thread.sleep(5000);  
                }  
            }  
            response.getWriter().println("1");  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
      
}  
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-06-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档