Client Pull/Server Push

Client pull en server push zijn twee totaal verschillende technieken, die als gemeenschappelijk doel hebben iets `met losse handen' te laten gebeuren op de pagina.
  • Client pull zorgt er voor dat er automatisch een volgende pagina geladen wordt, na een bepaalde tijd.
  • Server push wordt vooral gebruikt voor filmpjes. Er wordt een verbinding opengehouden, en de WWW server (de machine `aan de andere kant' dus) duwt er achter elkaar plaatjes doorheen. Die worden dan in het HTML document achter elkaar vertoond, met het effect van een filmpje.
  • Client pull

    Om een client pull te verzorgen hoeft er maar een ding in de header van een pagina gezet te worden:
      <meta http-equiv="Refresh" content="2; 
        URL=blabla.html">
    
    met `blabla.html' de naam van de volgende pagina, en de '2' slaat op het aantal seconden dat er gewacht wordt met het laden.
    Dit komt dus in het <head> van een pagina te staan, waar ook de titel staat.

    Een voorbeeld is te vinden in mijn Hotlist. Je kan ook andere dingen dan HTML pagina's laden; je kan er bijvoorbeeld de naam van een geluidsfile zetten, die wordt dan automatische geladen na een bepaald aantal seconden.

    Tips:

  • Hou rekening met trage verbindingen. Als je een enorm plaatje in de pagina hebt staan, kan het zijn dat de tijd al verstreken is voordat je plaatje helemaal ingeladen was. Zet dus liever geen plaatjes op de eerste pagina..
  • Maak de tijd niet te lang. Ik vind het persoonlijk nogal irritant als ik lange tijd machteloos moet zitten wachten tot de volgende pagina zichzelf gaat inladen.
  • Gebruik deze truuk om Netscape-gebruikers naar een andere pagina te leiden. Aangezien voorlopig alleen Netscape deze truuk aankan, kan je Netscape-gebruikers naar een `Netscape-enhanced' pagina laten gaan door heel snel automatisch een volgende pagina te laten laden. De niet-Netscapers blijven achter op de eerste pagina, en kunnen dan bijvoorbeeld via een linkje naar de niet-Netscape pagina. Sommige mensen noemen dit `Automatic Browser Detection'.
  • Server Push

    Voor Server Push heb je cgi-scripts nodig, dus dit is alleen mogelijk als je cgi-scripts mag schrijven en laten uitvoeren. Hier is een voorbeeld van een cgi-script dat een filmpje laat zien:
    #!/usr/local/bin/perl
    # sets autoflush - unbuffer i/o
    $| = 1;
    $boundary = "This is da boundary";
    $root_dir = "/helios/u1/jeroenb/www/startmovie/";
    print "HTTP/1.0 200 OK\n";
    print "Content-Type: multipart/x-mixed-replace;boundary=$boundary\n";
    print "\n--$boundary\n";
        for ($i = 100;$i < 188;$i++) 
        {
          print "Content-Type: image/gif\n\n";
          open (IMAGE, $root_dir."xydiagr".$i.".gif");
          while (<IMAGE>) 
          {
            print $_;
          }
          close (IMAGE);
          print "\n--$boundary\n";
        }
    
    De plaatjes xydiagrNNN.gif, met NNN van 100 tot 188, uit de directory /helios/u1/jeroenb/www/startmovie/ worden achter elkaar geladen, met daar tussenin de boundary string (verplicht voor dit `mime-type'). Dit is in aktie te zien op de pagina van Jeroen Bouwman. De HTML om het plaatje in beeld te krijgen is
      <img src="/cgi-bin/nph-start" alt="surver-push, 
        graphical browser only">
    
    Overigens heeft Jeroen's pagina ook een Client Pull, om mensen op trage verbindingen niet een uur vast te laten zitten aan het filmpje.

    Een ander prachtig voorbeeld van server push is te vinden op de McDougall Sound Archaeological Research Project. Dit is een `diapresentatie' van de resultaten van een archaeologisch onderzoek in Canada. Geheel `server push' gestuurd, dus achterover leunen en kijken maar. Erg mooi.

    De linkjes op deze pagina:

  • Mijn hotlist
    http://www.astro.uva.nl/michielb/hotlist.html
  • Jeroen Bouwman's pagina
    http://www.astro.uva.nl/jeroenb/html/sciencestart.html
  • de McDougall Sound Archaeological Research Project
    http://www.ucalgary.ca/UofC/faculties/SS/ARKY/show/showintro.html