2006/12/26

Server Push

Server Push 技術存在已經很多年,主要有三個方法,第一種最古老的用法就是利用 HTTP Header 一直定期更新網頁。另外二種可以參考 http://xulplanet.com/tutorials/mozsdk/serverpush.php. 該文二種作法都需要 netscape 相容瀏覽器,也就是 IE 不支援。其中前一種是由 Netscape 制定的,利用 Content-type: multipart/x-mixed-replace 表頭,這種方法的CGI 比較方便撰寫。最後一種則是較新的 server socket.

這邊利用 perl 來實作第二種作法,若你的伺服器是 apache, 檔名要存成 nph- 開頭:

#!/usr/bin/perl
# 若 www server 是 apache,檔名要設定成 nph- 開頭
use File::Find;
use CGI qw/:push -nph/;
# turn off io buffering
$|=1;

my $Pictures = "/home/wade/Pictures";
my $sleep = 2;

print multipart_init(-boundary=>'--magicalboundarystring');
find (\&wanted, $Pictures);

sub wanted
{
my $f = $File::Find::name;
next unless $f =~ /\.jpe?g$/i;
if (open FILE, "$f") {
print multipart_start(-type=>"image/jpeg");
while () { print; }
close FILE;
}
else {
print multipart_start(-type=>"text/plain");
print "File: $f";
}
print multipart_end;
sleep $sleep;
}
exit 0;

0 意見: