美文网首页猿人旅程我爱编程
JavaScript 数据推送:《Comet:基于HTTP长连接

JavaScript 数据推送:《Comet:基于HTTP长连接

作者: Junting | 来源:发表于2018-04-09 20:42 被阅读22次

    Comet 是什么?

    Comet 是一种Http 长连接技术,像服务器器发送一个请求,服务器不释放资源,不停的向前端输出数据。(ajax 发起一个请求, 服务器死循环,每次执行输出资源到前端)

    一个简单的例子实现:

    前端

    $.ajax({
        url: 'data.php',
        success: function (res) {
              console.log(res);
        }
    });
    
    
    

    前端也可以每隔多少秒请求一次,来实现长连接,实时数据的模拟,但是很消耗请求资源。
    可以用原生ajax 的监听 状态 3 来发现请求一直处于捕获当中。

    后端(php)

    <?php
      header("Content-Type:  application/json;charset=utf-8");
    # 设置无缓存,输出无缓存
      header("Cache-Control: max-age=0");
       
    # 实现资源不释放
    while(true) { // 死循环
       sleep(5); // 等待 5秒继续
        $res = array('success' => 'ok', 'text': "测试文本");
       echo json_encode($res);
      #  为不让程序挂了,每执行完一次,不去缓存页面,已缓存形式结束掉,下一次重新开始
      ob_flush(); // 释放资源,不向前端吐数据
      flush();  // 拿到释放的资源向前端发送数据
      
     # 不用 ob_flush() 、 flush(); 不推荐下面的方式
     exit(); // 每次执行完,退出程序, 资源也会释放
    }
    ?>
    

    相关文章

      网友评论

        本文标题:JavaScript 数据推送:《Comet:基于HTTP长连接

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