server push的技术好像ie不支持吧,只有NS支持
就是让客户端和服务器段保持不间断的联系现在一般象聊天室都使用客户端refresh的技术

解决方案 »

  1.   

     Server-Push作为一种编程方式,给人印象最深的就是“无刷新”聊天室。其实
    ,S
    erver-Push的应用远不止这一种方式。Server-Push可以实现音乐、动画,甚至视频
    传输
    。但由于兼容性(服务器端和客户端浏览器)问题,应用并不广泛。
    原理
        Server-Push从名称就可看出是“服务器推技术”。Server-Push就是服务器不
    断将
    数据向客户端传输,推动客户端程序“前进”。拿聊天室说吧,服务器不断将新的
    发言
    推向客户端,客户端的浏览器不断将新的信息显示出来,这就达到“无刷新”的效
    果。实现方法
        Server-Push与传统方式的不同之处有:
    1。HTTP报头不同。
    2。增加了“分界线”(boundary)
    3。禁止服务器端缓存
    4。多个内容部分用“分界线”隔开
    5。每个部分有独立的Content-type
    6。程序文件名必须为nph-*.cgi
        下面就是正规的Server-Push输出信息:(#后为注释)
    Content-Type: multipart/x-mixed-replace;boundary=BOUNDARY #<="boundary"=
    后面
    是设置的“分隔标志”
    --BOUNDARY #《=这里是“分界线”
    Content-type: text/html #《=内容1的Content-type
    内容1
    --BOUNDARY #<=又一个分界线
    Content-type: text/html #《-内容2的Content-type
    内容2
    ....
    程序开头要加入一行:
    $|=1;
    用来关闭缓存。程序文件名应为“nph-*.cgi”。
    兼容性处理
        许多服务器不支持(如:Apache for win32),浏览器也不一定支持(Internet
     Ex
    plorer也不支持!)目前只有Netscape支持。您可能会问了,为什么用Internet Ex
    plo
    rer也能进“无刷新”聊天室呢?这就是采取了兼容性处理。
        IE不支持Server_Push的多个Content-type,那么我们就用一个Content-type,
    加上
    一些特殊的HTML代码达到“无刷新”。
        做法与上面的代码基本相同,但只能有一个Content-type,并且输出一段HTML
    以后
    要执行一个脚本程序(脚本程序没有用途,只是让IE显示前面的HTML,可以是空的<
    scr
    ipt></script>)。这只是其中一种解决办法。
      

  2.   

     Server-Push作为一种编程方式,给人印象最深的就是“无刷新”聊天室。其实
    ,S
    erver-Push的应用远不止这一种方式。Server-Push可以实现音乐、动画,甚至视频
    传输
    。但由于兼容性(服务器端和客户端浏览器)问题,应用并不广泛。
    原理
        Server-Push从名称就可看出是“服务器推技术”。Server-Push就是服务器不
    断将
    数据向客户端传输,推动客户端程序“前进”。拿聊天室说吧,服务器不断将新的
    发言
    推向客户端,客户端的浏览器不断将新的信息显示出来,这就达到“无刷新”的效
    果。实现方法
        Server-Push与传统方式的不同之处有:
    1。HTTP报头不同。
    2。增加了“分界线”(boundary)
    3。禁止服务器端缓存
    4。多个内容部分用“分界线”隔开
    5。每个部分有独立的Content-type
    6。程序文件名必须为nph-*.cgi
        下面就是正规的Server-Push输出信息:(#后为注释)
    Content-Type: multipart/x-mixed-replace;boundary=BOUNDARY #<="boundary"=
    后面
    是设置的“分隔标志”
    --BOUNDARY #《=这里是“分界线”
    Content-type: text/html #《=内容1的Content-type
    内容1
    --BOUNDARY #<=又一个分界线
    Content-type: text/html #《-内容2的Content-type
    内容2
    ....
    程序开头要加入一行:
    $|=1;
    用来关闭缓存。程序文件名应为“nph-*.cgi”。
    兼容性处理
        许多服务器不支持(如:Apache for win32),浏览器也不一定支持(Internet
     Ex
    plorer也不支持!)目前只有Netscape支持。您可能会问了,为什么用Internet Ex
    plo
    rer也能进“无刷新”聊天室呢?这就是采取了兼容性处理。
        IE不支持Server_Push的多个Content-type,那么我们就用一个Content-type,
    加上
    一些特殊的HTML代码达到“无刷新”。
        做法与上面的代码基本相同,但只能有一个Content-type,并且输出一段HTML
    以后
    要执行一个脚本程序(脚本程序没有用途,只是让IE显示前面的HTML,可以是空的<
    scr
    ipt></script>)。这只是其中一种解决办法。
      

  3.   

    Server push——崭新的“推”技术,它是一种先进的服务器和客户机之间的通信连
    接方
    式,利用在服务器端的CGI脚本程序把数据源源不断地推向客户机,从而使客户机和
    服务
    器之间的交互性能大大提高。在中国计算机报电脑工作室中有介绍Server push,我
    们也
    搜集整理一些关于Server push的资料,供大家参考。
        首先也来看看传统Client pull的工作方式,Client pull以 这样的HTML文档头
    来自
    动刷新页面,使用户的浏览器能不断地刷新以接受服务器传回的内容,那么用户就
    不得
    不忍受等待“tmie”值的痛苦,相信在中国电信的网速之下,大家对这个深有体会

        采用了Server push技术的服务器在客户机做出一个请求后,和客户机建立一个
    永久
    的连接,然后服务器会根据客户机的请求不断把数据包推向客户,这个推的过程是
    不间
    断的。由服务器推向客户机的数据在客户机的浏览器上会不断产生新的内容,而且
    不会
    产生Client pull那样的HTML文档头,从而大大减少了延迟的时间,向(服务器响应
    ——
    客户机请求)同步迈进了一步。
        实现Server push技术非常简单。Server push在服务器的CGI脚本声明HTML文档
    类型
    时,把传统的content-type:text/html改为content-type:multipart/x-mixed-repl
    ace
    ;boundary=BOUNDARY这样的文档类型,就会反馈给用户一个Server push类型的连接
    。这
    是Server push和Client pull的根本区别。如果CGI脚本中提供了这样的HTML文档头
    ,服
    务器在处理客户机请求调用CGI脚本程序时,就会把CGI脚本中指定的数据强行推给
    客户
    机。
        Server push在生成页面时会采用很多的技巧来处理用户端浏览器页面的生成。
    主程
    序和传统方式没有本质的区别,但记得在脚本中加入print“Content-Type:multipa
    rt/
    x-mixed-replace;boundary=BOUNDARY”这样的文档头。应用在PERL写的CGI聊天室
    中有
    立竿见影之效,其速度和刷新方式和传统聊天室不是一个档次的
      

  4.   

    http://game.jztele.com/test/push.php
    经过一天的摸索,简单写了个推的东西,是PHP的,不过在刚开始打开页面时速度很慢,请个位高手分析此原码,以便进一步改善它,谢谢,!!
    <?//push.php
    flush();
    while(1){                   
    ob_end_clean();
    sleep(1);   
    echo $i++."<br>";
    flush();
    }
    ?>
    //////////就这么短,呵呵见笑了,不过如果运用得当,我想做一个server push 的WEB聊天室应该没问题的,
    不过就是在刚打开页面时非常慢,请各位高手诊脉~,谢谢
      

  5.   

    楼上的,能否给解释一下,我真是不懂呀,小弟是个新手,
    SLEEP我知道,可是FLUSH()是干什么用的
    还有那个ob_end_clean();
    也不知道呀
      

  6.   

    他写错了!!正确的是
    http://php2000.com/~uchinaboy/wdb/wdbread.php?forumid=3&filename=f_1
    此外,php2000的聊天实用的就是这个技术……