Ver Mensaje Individual
  #9 (permalink)  
Antiguo 05/09/2011, 19:41
IXtremeLT
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Comet o Como actualizar la web en tiempo real

Hola que tal papino, esque aún no me he dado a entender bien pero ya lo he probado y funciona ok!, así funciona:

1. La página principal contiene una variable que guarda el valor de la variable del iframe y se hace la petición con AJAX
2. El iframe se recarga y hace una comparación, si la variable de la ventana principal es distinta al la del iframe se hace la petición, pero en éste caso no hace hace por que la variable es la mísma.
3. El usuario envía un mensaje.
4. Se modifica el valor de la variable del archivo del iframe.
5. Al actualizarse el iframe, se da cuenta que la variable es diferente a la anterior entonces se procede a hacer la petición a "todos los usuarios" y entonces se guarda el nuevo valor para evitar que se vuelva a hacer la petición hasta que haya un nuevo mensaje.

Pondré un ejemplo con código para explicarlo un poco mejor.

Página principal:
Código HTML:
Ver original
  1. var id_peticion=12;
  2. function actualizarMensaje(){
  3.  //ETC. ETC
  4.  document.getElementById("mensaje") = responseText; //es el resultado de la peticion
  5. }
  6. </head>
  7. <form action="cambiarMensaje.php">
  8. <input type="text" name="nuevo_mensaje" value="Cambiar mensaje" /><input type="submit" />
  9. </form>
  10. <div id="mensaje"></div>
  11. <iframe src="actualizador.html" style="display:none"></iframe>
  12. </body>
  13. </html>
actualizador.html
Código HTML:
Ver original
  1. <meta http-equiv="refresh" content="1" />
  2. var id_peticion=1231;//Cualquier valor distinto al de la ventana principal
  3. var id_peticion_top=window.top.id_peticion;
  4. if(id_peticion!=id_peticion_top){
  5.  window.top.id_peticion=id_peticion;
  6.  window.top.actualizarMensaje();
  7. }
  8. </head>
  9. </body>
  10. </html>
cambiarMensaje.php
Código php:
Ver original
  1. <?php
  2. /*
  3. Código para insertar el mensaje enviado...
  4. */
  5. //Se cambia el valor de la variable del archivo "actualizador.php"
  6.  
  7. //Leemos el archivo del iframe
  8. define( "N", "actualizador.html");
  9. $f = fopen( N, "r" );
  10. $l = fread ( $f, filesize( N ) );
  11. fclose( $f );
  12.  
  13. //Editamos la variable "id_consulta"
  14. $l = preg_replace( "/id_consulta = .*;/", "id_consulta = ".rand().";", $l );
  15.  
  16. //Guardamos los cambios
  17. $f = fopen( N, "w" );
  18. fwrite( $f, $l );
  19. fclose( $f );
  20. ?>
Creo que con esto queda mejor explicado, aunque no puse el código faltante ya que eso es lo de menos pues es lo de siempre. Como mencioné, ya lo probé usando difentes sesiones con varios navegadores y todo funciona ok, Saludos.