關於ajax的短輪詢問題


利用前台的ajax不斷向后台服務器請求,后台服務器不斷查看數據庫里的信息是否變化。若變化將信息返回前台,並執行一些操作

前台ajax代碼 

注意要加上cache這一項,如果是post請求的化,可以免了。不然的化會一直從緩存中找數據,不能及時更新。

function ink(){
                 var a=$("#randnumber").val();
                $.ajax({
                type:"get",
                async:true,
                cache:false,
                url:"student.do",
                data: {method:"reg3",randnumber:a},
                success:function(msg){
                    try{
                         if(msg=="trues"){
                         window.location.href='success.jsp';
                         }
                     }catch(e){
                        alert('服務器繁忙!請稍后再試!');
                    }
                } 
                });   
                    
                
            }
            $(function(){setInterval("ink()",1000);});

后台代碼

@RequestMapping(params="method=reg3")
    public @ResponseBody String reg3(int randnumber){
        if(dimensionService.isexist(randnumber)){
            return "trues";
        }else{
            return "falses";
        }
    }

后台是用spring MVC的

這里重點貼出一下dimensionService中caozuo

public Dimension getById( int id){
        final int randnumber=id;
        System.out.println("dimension dao ing");
        Session session=hibernateTemplate.getSessionFactory().openSession();
        session.setFlushMode(FlushMode.AUTO);
        Query q=session.createQuery("from Dimension where randnumber=?");
        q.setInteger(0,randnumber);
        Dimension dimension = (Dimension)q.uniqueResult();
        session.close(); 
        return dimension;
    }

這段代碼是根據前台返回的randnumber進行返回數據庫對應的dimension。

做的時候由於沒有加session.close();這一句。出現了各種八阿哥,還好我及時參拜雍正。找出了。草,費煞人也。

短輪詢來說太浪費了,請求的基本是無用的請求。大大損耗了性能。

這里最好是用長輪詢來做,是推送模式。還在研究。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM