javascript利用xhr对象实现http流的comet轮循,主要是利用readyState等于3的特点

//此文件 为前端获取http流

html 复制代码
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="UTF-8"></html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>拖动元素到另外一个元素当中</title>
       <script type="text/javascript" src="common.js"></script>
       <style type="text/css">
            #container
            {
                border:1px solid red;
                width: 300px;
                height: 300px;
            }
            #getmsg 
            {
                border: 1px solid blue;
                width: 200px;
                height: 200px;
                margin-top: 20px;
            }
        </style>
    </head>
    <body>
      
        <script type="text/javascript">
          


            var xhr=new createXHR();
            xhr.onreadystatechange=function(){
                if(xhr.readyState===3 && xhr.status===200)
                {
                    var received=0;
                    var result=xhr.responseText.substring(received);
                    received+=result.length;
                    process(result);
                }else if(xhr.readyState===4)
                {
                    console.log(xhr.responseText);
                }
            };
            xhr.open("get","data.php",true);
            xhr.send();
            function process(result)
            {
                
                var arr=result.split("\t\n");
                arr.pop();
                
                
                for(var i=0,len=arr.length;i<len;i++)
                {
                  document.write(JSON.parse(arr[i]).text+"<br/>");

                }
               // console.log(objs);
               
            }
            
        </script>
    </body>
</html>

//此文件为后端data.php

php 复制代码
<?php
header('Content-type:application/json;charset=utf-8');
header("Cache-Control:max-age=0");//设置无缓存
$i=0;
while($i<10)
{
    $i++;
    $result=array('success'=>'ok','text'=>'测试文本');
    echo json_encode($result,JSON_UNESCAPED_UNICODE);//设置汉字不进行轮换
  	//要输出linux格式的空格,避免成一坨不好分格
  	echo "\t\n";
    
    sleep(1);
    /*
    $radom=rand(1,999);
    echo $radom;
   */
   //输出缓存,必须和flush()一起使用
    ob_flush();
    flush();//刷新缓存
     
}
?>
相关推荐
少年姜太公13 小时前
什么?还不知道git cherry pick?
前端·javascript·git
长安第一美人15 小时前
C 语言可变参数(...)实战:从 logger_print 到通用日志函数
c语言·开发语言·嵌入式硬件·日志·工业应用开发
Larry_Yanan15 小时前
Qt多进程(一)进程间通信概括
开发语言·c++·qt·学习
superman超哥15 小时前
仓颉语言中基本数据类型的深度剖析与工程实践
c语言·开发语言·python·算法·仓颉
Liu.77415 小时前
vue3使用vue3-print-nb打印
前端·javascript·vue.js
不爱吃糖的程序媛16 小时前
Ascend C开发工具包(asc-devkit)技术解读
c语言·开发语言
bu_shuo16 小时前
MATLAB奔溃记录
开发语言·matlab
你的冰西瓜16 小时前
C++标准模板库(STL)全面解析
开发语言·c++·stl
dly_blog16 小时前
Vue 逻辑复用的多种方案对比!
前端·javascript·vue.js
徐先生 @_@|||17 小时前
(Wheel 格式) Python 的标准分发格式的生成规则规范
开发语言·python