【web】http长连接技术(6)iframe demo的简化

来源:互联网 发布:windows无法与dns通讯 编辑:程序博客网 时间:2024/05/16 00:26

标签:web javascript comet php
通过对这个例子的分析,我们也可以完全不用comet,直接使用iframe.
也可以不用prototype.js
Index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Comet demo</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   
  </head>
  <body>
    <div id="content">The server time will be shown here</div>
<IFRAME id=workerWin name=workerWin src="./backend.php" width=0 height=0></IFRAME>

<script type="text/javascript">
    
    function printServerTime(time) {
    //document.getElementById("content").innerHTML = time; //和下面方法等效
    document.all("content").innerHTML = time;
    //$('content').innerHTML = time; //需要prototype.js
  
  }

 
</script>

</body>
</html>
说明:
这里去掉了comet对象,也没有动态生成iframe,而是直接使用显式的iframe定义。
prototype.js在这个例子作用不大,也可以去掉。直接通过dhtml/dom定位页面元素

backend.php
<?php

while(1) {
  echo '<script type="text/javascript">';
  echo 'window.parent.printServerTime('.time().');';
  //echo 'alert(1);';
  echo '</script>';
  ob_flush();
  flush(); // used to send the echoed data to the client
  sleep(1); // a little break to unload the server CPU
}

?>

说明:调用的printServerTime函数直接是页面定义的,没有通过comet封装。