サーバープッシュ(自動再表示)

トップ > アラカルト > サーバープッシュ(自動再表示)
本頁で説明している multipart/x-mixed-replace によるサーバープッシュは、Firefox, Opera, Safari などはサポートしていますが、Internet Explorer ではサポートされていません。代わりに、Long polling や WebSocket API などが利用されています。(2018年1月7日追記)

サーバープッシュ

Netscape Navigatorでは、クライアントプルと同様、サーバープッシュ(ServerPush)という技術を用いても、ページを自動的に再表示することができます。CGIスクリプトを利用するので設定は多少面倒ですが、任意のタイミング(誰かが掲示板に新規メッセージを書き込んだなど)で再表示可能ですので、サーバーとブラウザの間の通信を抑制することができます。

以下のようなCGIスクリプトを nph-push.cgi のように nph- で始まるファイル名で設置して呼び出してください。(→NPHスクリプト)CGIの設置方法に関しては「とほほのCGI入門」などを参照してください。

---ThisIsRandomString--- の部分は、本文中にたまたま現れることの無さそうな適当な文字列を指定してください。

#!/usr/local/bin/perl

$| = 1;
$boundary = "---ThisIsRandomString---";

print "HTTP/1.0 200 OK\n";
print "Content-type: multipart/x-mixed-replace;";
print "boundary=$boundary\n";
print "\n";
print "$boundary\n";
while (1) {
    unless (print "") {
        last;
    }
    print "Content-type: text/html\n";
    print "\n";
    print "<html>\n";
    print "<head>\n";
    print "<title>;サーバープッシュ</title>\n";
    print "</head>\n";
    print "<body>\n";
    print "現在の時刻は\n";
    ($sec, $min, $hour, $mday, $mon, $year)
        = localtime(time());
    printf("%4d/%02d/%02d %02d:%02d:%02d\n",
        $year + 1900, $mon + 1,
        $mday, $hour, $min, $sec);
    print "です。";
    print "</body>\n";
    print "</html>\n";
    print "$boundary\n";
    sleep(5);
}

Copyright (C) 1998 杜甫々
1998年5月24日
http://www.tohoho-web.com/wwwxx004.htm