zoukankan      html  css  js  c++  java
  • 通过html5 的EventSource来进行数据推送

    以往我们要获取服务器的数据更新,一般通过ajax的定时请求,不过这样效率就低了。我们通过html5的EventSource可以很方便的获取服务器的数据更新,不过IE好像不支持。
     
    例1如下:
    index.html代码如下:
    <!DOCTYPE HTML>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="data"></div>
    </body>
    <script type="text/javascript">
    //创建EventSource对象
    var es = new EventSource("./data.php");
    //接收到消息的回调函数
    es.onmessage = function(e) {
        document.getElementById("data").innerHTML = e.data;
    };
    </script>
    </html>
    
    data.php代码如下:
    <?php
    header('Content-Type: text/event-stream');
    header('Cache-Control: no-cache');
    
    $num = mt_rand(1000, 9999);
    //必须以data:开头,
    
    结尾
    echo "data: {$num}
    
    ";
    //刷新缓存
    ob_flush();
    flush();
    
    我们把代码调整一下:
    <!DOCTYPE HTML>
    <html lang="zh-CN">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="data">
            <ul id="data-list">
    
            </ul>
        </div>
    </body>
    <script type="text/javascript">
    //创建EventSource对象
    var es = new EventSource("./data.php");
    //接收到消息的回调函数
    es.onmessage = function(e) {
        var addLi = document.createElement("li");
        addLi.innerHTML = e.data;
        document.getElementById("data-list").appendChild(addLi);
    };
    </script>
    </html>
    
    <?php
    header('Content-Type: text/event-stream');
    header('Cache-Control: no-cache');
    
    $time = date('Y-m-d H:i:s');
    echo "data: {$time}
    
    ";
    ob_flush();
    flush();
    
    通过下面的图可以看到,浏览器(chrome)每隔3秒会自动请求data.php文件获取数据。
    通过html5 的EventSource来进行数据推送 - 怀素真 - 因上努力 果上随缘
     
  • 相关阅读:
    学习java随笔第五篇:流程控制
    学习java随笔第四篇:运算符
    学习java随笔第三篇:java的基本数据类型
    知识精简
    性能优化(详细)
    2,8,10,16进制转换
    前端优化35例
    性能优化
    字面量自定义事件

  • 原文地址:https://www.cnblogs.com/jkko123/p/6294570.html
Copyright © 2011-2022 走看看