美文网首页
Ajax轮询和长轮询

Ajax轮询和长轮询

作者: 小慕先森 | 来源:发表于2017-08-11 11:28 被阅读0次

缺点:Ajax轮询需要服务器有很快的处理速度与快速响应。long poll需要很高的并发,体现在同时容纳请求的能力。

一、轮询是在浏览器客户端实现的:

如果从后端获取数据成功则停止请求。

<script>
$(function(){
    var code,status;
    function getResult(){
        var params = {
            code: code,
            operate: '什么操作TODO:',
        };
        $.ajax({
            type: 'POST',
            url: "请求地址TODO:",
            data: params, 
            success: function(response) {
                console.log('成功啦');
                //对成功数据的操作TODO:
                clearInterval(status);               
            },
            dataType: 'json',
            timeout: 30*1000,// 超时时间
            // 超时意味着出错了
            error: function (error) {
              console.log('失败啦');
            }

        });
   }

  });
//获取code。如果code存在则调用轮询来获取数据
    if(code){
           status = setInterval(getResult, 1000);
      }
   
  </script>

setInterval()用法:


    function direct() {
        console.info( "time: ", ( new Date() ).getTime() );
    }
    function showlog() {
        setInterval(direct(), 1000);
    }
    function showlog_2() {
        setInterval( direct, 1000 );
    }
    function showlog_3() {
        setInterval( function () {
            direct();
        }, 1000 );
    }
    function showlog_4() {
        setInterval( "direct()", 1000 );
    }
    // showlog(); //=> 执行一次
    // showlog_2(); //=> 每隔 1000毫秒 执行一次
    // showlog_3(); //=> 每隔 1000毫秒 执行一次
    // showlog_4(); //=> 每隔 1000毫秒 执行一次

二、长轮询

ajax实现:在发送ajax后,服务器端会阻塞请求直到有数据传递或超时才返回。 客户端JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,客户端再次建立连接,周而复始

<script>
$(function() {
    //定义code
    var code;
    //获取code  TODO:
    getStatusLong();
    //  长轮询执行
    function getStatusLong()
    {
        var data = {
            operate: '操作TODO:',
            code: code,
        };
        $.ajax({
            type: 'post',
            url: url, 
            data: data, 
            success: function(response) {
                if (response.error == 0) {
                //成功的操作
                }
            },
            dataType: 'json',
            timeout: 10*1000,// 超时时间
            // 超时意味着出错了
            error: function (error) {
                console.log(error);// timeout
                // 立即发出请求
                getOrderStatusLong();
            }

        });

    }
});
</script>

服务端的实现:

//获取数据TODO:
//验证数据TODO:
 switch ($operate) {
            case 'XXX':
                //长连接是实现
                # 设置最大的执行时间
                ini_set('max_execution_time', '0');// 服务器一直执行
                while (true) {
                    $status =获取数据
                    if ($status) {
                        break;
                    }
                }
                return json_encode($result);
                break:
}

相关文章

  • Ajax轮询和长轮询

    缺点:Ajax轮询需要服务器有很快的处理速度与快速响应。long poll需要很高的并发,体现在同时容纳请求的能力...

  • ajax轮询与长轮询

    刚刚网了关于轮询的知识,必须拿到自己这里来做个备份了! 其实以前用ajax轮询做个及时数据更新的,只是当时做了不知...

  • ajax 长轮询

    长轮询 和服务器始终保持一个连接。 如果当前连接请求成功后,将更新数据并且继续创建一个新的连接和服务器保持联系。 ...

  • ajax轮询、长轮询与WebSocket

    轮询 浏览器按照规定的时间向服务器发送请求,服务器接受并返回响应信息并关闭连接。(通过定时器实现) 长轮询 浏览器...

  • http长短连接和长短轮询、webSocket

    本文主要介绍长连接、短连接、长轮询、短轮询 和 webSocket。长连接、短连接、长轮询、短轮询是基于http的...

  • 你需要了解的WebSocket

    现在直播非常火,直播里面的聊天窗用到了WebSocket,这里做一个介绍。首先,先简单说一下ajax轮询和长轮询,...

  • Python 轮询、长轮询、websocket

    轮询 ajax轮询 ,ajax轮询 的原理非常简单,让浏览器隔个几秒就发送一次请求,询问服务器是否有新信息。 1、...

  • 服务器端推送技术

    源文件:https://w3ctech.com/topic/1754 技术实现 1、ajax轮询 2、ajax长轮...

  • PHP与反ajax推送,实现的消息实时推送功能

    index.html ajax处理输入 write.php 长轮询推送 ajaxPush.php

  • ajax轮询

网友评论

      本文标题:Ajax轮询和长轮询

      本文链接:https://www.haomeiwen.com/subject/ycslrxtx.html