Foros del Web » Programando para Internet » Javascript »

como modificar comet

Estas en el tema de como modificar comet en el foro de Javascript en Foros del Web. Buenas estoy investigando el comet del que no se nada y me gustaría saber como puedo hacer que en vez de la hora me muestre ...
  #1 (permalink)  
Antiguo 13/10/2012, 04:53
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
como modificar comet

Buenas estoy investigando el comet del que no se nada y me gustaría saber como puedo hacer que en vez de la hora me muestre los datos de una base de datos a cada momento es decir modificarlo para que me salgan los comentarios, otra duda que tengo es que al tiempo deja de mostrar el time y se para con el que ya tiene y se queda hay parado y nose porque, mi idea es mostrar los comentarios cada istante sin setinterval, y sin saturar el server este es el codigo:
backend.php
Código PHP:
Ver original
  1. </head>
  2. <body>
  3.  
  4. <script type="text/javascript">
  5.   //Navegadores KHTML no compartes javascripts entre iframes
  6.   var is_khtml = navigator.appName.match("Konqueror") || navigator.appVersion.match("KHTML");
  7.   if (is_khtml)
  8.   {
  9.     var prototypejs = document.createElement('script');
  10.     prototypejs.setAttribute('type','text/javascript');
  11.     prototypejs.setAttribute('src','prototype.js');
  12.     var head = document.getElementsByTagName('head');
  13.     head[0].appendChild(prototypejs);
  14.   }
  15.   // cargamos objeto comet (esto en realidad es el nombre del iframe)
  16.   var comet = window.parent.comet;
  17. </script>
  18.  
  19. <?php
  20.   echo '<script type="text/javascript">';
  21.   echo 'come.printServerTime('.time().');';
  22.   echo '</script>';
  23.   flush();
  24.   sleep(10); // un descanso para aliviar el CPU del servidor
  25. }
  26. ?>
  27. </body>
  28. </html>
index.html
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3.   <head>
  4.     <title>Comet demo</title>
  5.     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6.     <script type="text/javascript" src="prototype.js"></script>
  7.   </head>
  8.   <body>
  9.     <div id="content">La hora del servidor se mostrará aqui</div>
  10.  
  11. <script type="text/javascript">
  12. var comet = {
  13.   connection   : false,
  14.   iframediv    : false,
  15.  
  16.   initialize: function() {
  17.     if (navigator.appVersion.indexOf("MSIE") != -1) {
  18.  
  19.       // Para navegadores IE
  20.       comet.connection = new ActiveXObject("htmlfile");
  21.       comet.connection.open();
  22.       comet.connection.write("<html>");
  23.       comet.connection.write("<script>document.domain = '"+document.domain+"'");
  24.       comet.connection.write("</html>");
  25.       comet.connection.close();
  26.       comet.iframediv = comet.connection.createElement("div");
  27.       comet.connection.appendChild(comet.iframediv);
  28.       comet.connection.parentWindow.comet = comet;
  29.       comet.iframediv.innerHTML = "<iframe id='comet_iframe' src='./backend.php'></iframe>";
  30.  
  31.     } else if (navigator.appVersion.indexOf("KHTML") != -1) {
  32.  
  33.       // Para navegadores KHTML
  34.       comet.connection = document.createElement('iframe');
  35.       comet.connection.setAttribute('id',     'comet_iframe');
  36.       comet.connection.setAttribute('src',    './backend.php');
  37.       with (comet.connection.style) {
  38.         position   = "absolute";
  39.         left       = top   = "-100px";
  40.         height     = width = "1px";
  41.         visibility = "hidden";
  42.       }
  43.       document.body.appendChild(comet.connection);
  44.  
  45.     } else {
  46.    
  47.       // Para otros navegadores (Firefox...)
  48.       comet.connection = document.createElement('iframe');
  49.       comet.connection.setAttribute('id',     'comet_iframe');
  50.       with (comet.connection.style) {
  51.         left       = top   = "-100px";
  52.         height     = width = "1px";
  53.         visibility = "hidden";
  54.         display    = 'none';
  55.       }
  56.       comet.iframediv = document.createElement('iframe');
  57.       comet.iframediv.setAttribute('src', './backend.php');
  58.       comet.connection.appendChild(comet.iframediv);
  59.       document.body.appendChild(comet.connection);
  60.  
  61.     }
  62.   },
  63.   // esta función será llamada desde backend.php
  64.   printServerTime: function (time) {
  65.     $('content').innerHTML = time;
  66.   },
  67.   onUnload: function() {
  68.     if (comet.connection) {
  69.       comet.connection = false; // se eliminará el iframe para prevenir problemas con IE cuando se recargue la pagina.
  70.     }
  71.   }
  72. }
  73. Event.observe(window, "load", comet.initialize);
  74. Event.observe(window, "unload", comet.onUnload);
  75.  
  76. </body>
  77. </html>
gracias espero que me puedan hechar una mano porque todos los tutoriales no los entiendo y me copio el codigo haber como funcionan pero no lo entiendo un saludo.

Última edición por edie8; 13/10/2012 a las 05:01
  #2 (permalink)  
Antiguo 13/10/2012, 08:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: como modificar comet

Sí es el tutorial que creo, en el mismo le indican que sólo pocos navegadores aceptan el flujo de HTML por segmentos desde el servidor, por lo cual en algunos navegadores no funciona, es una manera muy rudimentaria de implementar comet.

En otros post le e indicado mejores alternativas, AJAX longpolling le permite evitar el saturado de ancho de banda, pero sí quiere un comet real debe usar APE o HTML5 WebSockets, por desgracia en PHP todavía no es posible hacer el server multi-thereading, por eso hay que recurrir a otros lenguajes como node.js
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 14/10/2012, 08:18
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: como modificar comet

Muchas gracias por la información desconozco el tema de comet y node.js perdonen mi ignorancia, y las molestias un saludo.
  #4 (permalink)  
Antiguo 21/10/2012, 05:40
 
Fecha de Ingreso: noviembre-2011
Mensajes: 516
Antigüedad: 12 años, 5 meses
Puntos: 10
Respuesta: como modificar comet

Me gustaría saber si esto que encontre es comet ono:
comet.js
Código Javascript:
Ver original
  1. var xmlhttp = function()
  2. * * {
  3. * * * * var a;try{a = new XMLHttpRequest();}
  4. * * * * catch(e){try{a = new ActiveXObject('Msxml2.XMLHTTP');}
  5. * * * * catch(e){try{a = new ActiveXObject('Microsoft.XMLHTTP');}
  6. * * * * catch(e){alert('Your browser doesn\'t support ajax');a=false;}
  7. * * * * }}return a;
  8. * * };*
  9. * * window.onload = function()
  10. * * {
  11. * * * * var a = new comet();
  12. * * };*
  13. * * var comet = function()
  14. * * {
  15. * * * * var a = new xmlhttp();
  16. * * * * a.open('post',window.location+"?"+Math.random()+"="+Math.random(), true);
  17. * * * * a.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  18. * * * * a.onreadystatechange = function()
  19. * * * * {
  20. * * * * * * if(a.readyState == 4)
  21. * * * * * * {
  22. * * * * * * * * document.getElementById('content').innerHTML = a.responseText;
  23. * * * * * * * * window.setTimeout(function(){
  24. * * * * * * * * * * a = new comet();* * * * * * * * * *
  25. * * * * * * * * },1000);
  26. * * * * * * * *
  27. * * * * * * }
  28. * * * * };
  29. * * * * a.send('algo=algo');* * * * * * * *
  30. * * };
index.php
Código PHP:
Ver original
  1. <?php  
  2. if($_POST)    
  3. {
  4.     set_time_limit(0);      
  5.     header("Edge-control: no-store");  
  6.     sleep(1);
  7.     include('config.php');
  8.     $notificaciones=mysql_query("select * from messages",$conexion);
  9.     while($rs=mysql_fetch_assoc($notificaciones))
  10.     {
  11.     echo   $rs['estado']."<br>";
  12.     }  
  13.      
  14.     mysql_close($conexion);    
  15.     exit();  
  16. }
  17. ?>
  18. <html>
  19. <head>    
  20. </head>
  21. <body>
  22.     <div id="content">Cargando...</div>
  23. <script type="text/javascript" src="comet.js"></script>
  24. </body>
  25. </html>
y si resulta que es correcto y que es comet, porque me duplica los formulario y las paginas enteras al usarlo?? y al escribir al formulario cuando pasa x tiempo me borra lo que e escrito sin dejarme terminar porque sudece?? si no es asi me podeis poner un ejemplo de comet? ya que lo ando buscando y siempre me sucede que no es o no me funciona un saludo. gracias.

Etiquetas: comet, funcion, html, js, modificar, php, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:56.