BLOGCAT El teu directori de blogs en català
Principal :: Blogcat Principal
perque  :: Blogcat Per què?
Directori  :: Blogcat Directori
Navegar :: Blogcat Navegar
Tags :: Blogcat Tags
Cercar :: Blogcat Cercar
Registrar-se :: Blogcat Nou usuari
Validar :: Blogcat Espai privat
Ajuda :: Blogcat Ajuda

Notice: Undefined index: HTTP_REFERER in /var/www/vhosts/blogcat.net/httpdocs/WEB-INF/functions/general_functions.php on line 44
LostSys
HTTP_Streaming
Data de creació: 2007-05-25 16:05:05  
Visualitzacions: 0  
   

El HTTP_Streaming es una tècnica que podem fer servir amb AJAX per tal de tenir aplicacions mes dinàmiques.

HTTP_Streaming es tracta de fer una petició HTTP al servidor i que el servidor no tanqui la sessió, de forma, que tenim un socket obert en direcció servidor a client. Molt útil a l’hora de fer aplicacions on el procés a realitzar en el servidor sigui llarg. Per exemple: Cercadors, Metasearchs, aplicacions de treball en Grid, etc.

Exemple bàsic:

codi client HTML:

<div id=’streaming’></streaming>

<script language=’javascript’>

function streamIn(url) {
  stream.pos=0;

  cridaAjax( url, function( ) {
    if (req.readyState == 3) {
    var s=req.responseText.substring( pos, req.responseText.length );
    while ( s.indexOf(”#\n\n#”)!=-1 ) {
      var pos2=s.indexOf(”#\n\n#”);

      connectionBar.innerHTML=s.substring(0,pos2);
      eval(s.substring(0,pos2));

      pos+=pos2+4;
      s=req.responseText.substring( pos, req.responseText.length );
      }
    }
  });
  }

var req=false;
function cridaAjax( url, func ) {
  // Creo el gestor de peticions
  if (window.XMLHttpRequest) req = new XMLHttpRequest();
    else if (window.ActiveXObject) req = new ActiveXObject(”Microsoft.XMLHTTP”);

  // Mostro missatge de carregant o error
  if (!req) return;

  // Faig la petició
  req.open(”GET”, url, true);
  req.onreadystatechange = func;

  try { req.send( null ); } catch (failed) { alert( failed.message ); }
  }

streamIn(?servidor.php?);
</script>

codi servidor PHP:

while (true) {
  usleep(100); // Temps per a no co·lapsar
  echo “document.getElementById(’ini’).innerHTML=’$i - $num’;”;

  echo “#\n\n#”; // Final de transmisió
  flush(); // Buidat del buffer

  $i++;
  }

La idea es veu perfectament en el codi: Petició HTTP al servidor i esperar a que vagi arribant la informació. S’ha de definir una senyal de final de missatge per poder saber quan s’ha de interpretar un conjunt de dades i tenir un comptador per saber de tot el buffer de la connexió quin tros s’ha interpretat i quin no.

   
Usuari: acoronadoc  
Tota la informació aquí mostrada es propietat de http://www.lostsys.com
El teu directori de blogs en català :: Blogcat © All rights reserved