push.html

来自「perl教程」· HTML 代码 · 共 284 行 · 第 1/2 页

HTML
284
字号
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>CGI::Push - Simple Interface to Server Push</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',2);</script>
<h1><a>CGI::Push - Simple Interface to Server Push</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<li><a href="#using_cgi__push">USING CGI::Push</a></li>
	<ul>

		<li><a href="#heterogeneous_pages">Heterogeneous Pages</a></li>
		<li><a href="#changing_the_page_delay_on_the_fly">Changing the Page Delay on the Fly</a></li>
	</ul>

	<li><a href="#installing_cgi__push_scripts">INSTALLING CGI::Push SCRIPTS</a></li>
	<li><a href="#author_information">AUTHOR INFORMATION</a></li>
	<li><a href="#bugs">BUGS</a></li>
	<li><a href="#see_also">SEE ALSO</a></li>
</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>CGI::Push - Simple Interface to Server Push</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
    <span class="keyword">use</span> <span class="variable">CGI::Push</span> <span class="string">qw(:standard)</span><span class="operator">;</span>
</pre>
<pre>
    <span class="variable">do_push</span><span class="operator">(</span><span class="string">-next_page</span><span class="operator">=&gt;\&amp;</span><span class="variable">next_page</span><span class="operator">,</span>
            <span class="string">-last_page</span><span class="operator">=&gt;\&amp;</span><span class="variable">last_page</span><span class="operator">,</span>
            <span class="string">-delay</span><span class="operator">=&gt;</span><span class="number">0</span><span class="operator">.</span><span class="number">5</span><span class="operator">);</span>
</pre>
<pre>
    <span class="keyword">sub</span><span class="variable"> next_page </span><span class="operator">{</span>
        <span class="keyword">my</span><span class="operator">(</span><span class="variable">$q</span><span class="operator">,</span><span class="variable">$counter</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">@_</span><span class="operator">;</span>
        <span class="keyword">return</span> <span class="keyword">undef</span> <span class="keyword">if</span> <span class="variable">$counter</span> <span class="operator">&gt;=</span> <span class="number">10</span><span class="operator">;</span>
        <span class="keyword">return</span> <span class="variable">start_html</span><span class="operator">(</span><span class="string">'Test'</span><span class="operator">),</span>
               <span class="variable">h1</span><span class="operator">(</span><span class="string">'Visible'</span><span class="operator">),</span><span class="string">"\n"</span><span class="operator">,</span>
               <span class="string">"This page has been called "</span><span class="operator">,</span> <span class="variable">strong</span><span class="operator">(</span><span class="variable">$counter</span><span class="operator">),</span><span class="string">" times"</span><span class="operator">,</span>
               <span class="variable">end_html</span><span class="operator">();</span>
    <span class="operator">}</span>
</pre>
<pre>
    <span class="keyword">sub</span><span class="variable"> last_page </span><span class="operator">{</span>
        <span class="keyword">my</span><span class="operator">(</span><span class="variable">$q</span><span class="operator">,</span><span class="variable">$counter</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">@_</span><span class="operator">;</span>
        <span class="keyword">return</span> <span class="variable">start_html</span><span class="operator">(</span><span class="string">'Done'</span><span class="operator">),</span>
               <span class="variable">h1</span><span class="operator">(</span><span class="string">'Finished'</span><span class="operator">),</span>
               <span class="variable">strong</span><span class="operator">(</span><span class="variable">$counter</span> <span class="operator">-</span> <span class="number">1</span><span class="operator">),</span><span class="string">' iterations.'</span><span class="operator">,</span>
               <span class="variable">end_html</span><span class="operator">;</span>
    <span class="operator">}</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>CGI::Push is a subclass of the CGI object created by CGI.pm.  It is
specialized for server push operations, which allow you to create
animated pages whose content changes at regular intervals.</p>
<p>You provide CGI::Push with a pointer to a subroutine that will draw
one page.  Every time your subroutine is called, it generates a new
page.  The contents of the page will be transmitted to the browser
in such a way that it will replace what was there beforehand.  The
technique will work with HTML pages as well as with graphics files, 
allowing you to create animated GIFs.</p>
<p>Only Netscape Navigator supports server push.  Internet Explorer
browsers do not.</p>
<p>
</p>
<hr />
<h1><a name="using_cgi__push">USING CGI::Push</a></h1>
<p>CGI::Push adds one new method to the standard CGI suite, do_push().
When you call this method, you pass it a reference to a subroutine
that is responsible for drawing each new page, an interval delay, and
an optional subroutine for drawing the last page.  Other optional
parameters include most of those recognized by the CGI <code>header()</code>
method.</p>
<p>You may call <code>do_push()</code> in the object oriented manner or not, as you
prefer:</p>
<pre>
    <span class="keyword">use</span> <span class="variable">CGI::Push</span><span class="operator">;</span>
    <span class="variable">$q</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">CGI::Push</span><span class="operator">;</span>
    <span class="variable">$q</span><span class="operator">-&gt;</span><span class="variable">do_push</span><span class="operator">(</span><span class="string">-next_page</span><span class="operator">=&gt;\&amp;</span><span class="variable">draw_a_page</span><span class="operator">);</span>
</pre>
<pre>
        -or-</pre>
<pre>
    <span class="keyword">use</span> <span class="variable">CGI::Push</span> <span class="string">qw(:standard)</span><span class="operator">;</span>
    <span class="variable">do_push</span><span class="operator">(</span><span class="string">-next_page</span><span class="operator">=&gt;\&amp;</span><span class="variable">draw_a_page</span><span class="operator">);</span>
</pre>
<p>Parameters are as follows:</p>
<dl>
<dt><strong><a name="item__2dnext_page">-next_page</a></strong>

<dd>
<pre>
    <span class="variable">do_push</span><span class="operator">(</span><span class="string">-next_page</span><span class="operator">=&gt;\&amp;</span><span class="variable">my_draw_routine</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>This required parameter points to a reference to a subroutine responsible for
drawing each new page.  The subroutine should expect two parameters
consisting of the CGI object and a counter indicating the number
of times the subroutine has been called.  It should return the
contents of the page as an <strong>array</strong> of one or more items to print.  
It can return a false value (or an empty array) in order to abort the
redrawing loop and print out the final page (if any)</p>
</dd>
<dd>
<pre>
    <span class="keyword">sub</span><span class="variable"> my_draw_routine </span><span class="operator">{</span>
        <span class="keyword">my</span><span class="operator">(</span><span class="variable">$q</span><span class="operator">,</span><span class="variable">$counter</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">@_</span><span class="operator">;</span>
        <span class="keyword">return</span> <span class="keyword">undef</span> <span class="keyword">if</span> <span class="variable">$counter</span> <span class="operator">&gt;</span> <span class="number">100</span><span class="operator">;</span>
        <span class="keyword">return</span> <span class="variable">start_html</span><span class="operator">(</span><span class="string">'testing'</span><span class="operator">),</span>
               <span class="variable">h1</span><span class="operator">(</span><span class="string">'testing'</span><span class="operator">),</span>
               <span class="string">"This page called $counter times"</span><span class="operator">;</span>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?