zoukankan      html  css  js  c++  java
  • ajax长轮询实现即时聊天室

    前段js:

    //处理ajax长轮询
    $(function(){
    ask_order();
    function ask_order(){
    var ask_action = "{:U('index/order_commet',array('time'=>10,'desk_id'=>$desk_id))}";
    $.ajax({   
                     type:"GET",   
                     dataType:"json",   
                     url:ask_action,   
                     timeout:80000,     //ajax请求超时时间80秒   
                     success:function(data,textStatus){   
                         //从服务器得到数据,显示数据并继续查询   
                         if(data.status=="1"){
    //alert(data.data);
    var html_str = "";
    var result = data.data;
    $(result).each(function(i) {
    html_str += '<li>'+result[i].goods_name+'&nbsp;&nbsp;&nbsp;&nbsp;<a data-order="'+result[i].order_id+'" data-product="'+result[i].goods_name+'" class="little_delete" href="javascript:;">删除</a></li>'
    });
    $('.product_ordered').html(html_str);
                         }   
                      //未从服务器得到数据,继续查询   
                         if(data.status=="0"){   
                              console.log('没有数据');
                         }   
    setTimeout(ask_order, 5000);//5000毫秒,自己定义延迟时间
                     } ,
                  //Ajax请求超时,继续查询   
                  error:function(){   
                         setTimeout(ask_order, 5000);//5000毫秒,自己定义延迟时间
                  }   
                        
                 }); 
    }
    })

    后台PHP:

    //处理长轮训方法。
    public function order_commet(){
    if(empty($_GET['time'])){
    die();
    }
    set_time_limit(0);
    $limit_time = $_GET['time'];
    $desk_id = $this->desk_id;
    $i = 0;
    while (TRUE) {
    usleep(500000);
    $i++;
    $result = $this->order_mod->get_order_by_desk($desk_id);
    if($result['result'] == 1){
    $this->ajaxReturn(array('status'=>1,'data'=>$result['data']));
    die();
    }
    if($i == $limit_time || !$desk_id){
    $this->ajaxReturn(array('status'=>0,'data'=>'无数据'));
    die();
    }
    }
    }

  • 相关阅读:
    PHP之旅3 php数组以及遍历数组 以及each() list() foreach()
    NSSetUncaughtExceptionHandler
    runtime
    Objective-C中的instancetype和id区别
    tableView 局部刷新
    CGAffineTransform
    iOS中文本属性Attributes
    ios 相机 自定义 相片的截取
    php程序的生命周期
    PHP代码执行流程
  • 原文地址:https://www.cnblogs.com/JulianJiang/p/3819870.html
Copyright © 2011-2022 走看看