Foros del Web » Programando para Internet » Javascript »

respuesta del servidor muy lenta

Estas en el tema de respuesta del servidor muy lenta en el foro de Javascript en Foros del Web. hola, muy buenas. Tengo un evento onkeypress asociado a una función javascript, que me devuelve unos valores de la página try.php en el div "chata". ...
  #1 (permalink)  
Antiguo 06/02/2012, 11:21
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
respuesta del servidor muy lenta

hola, muy buenas.

Tengo un evento onkeypress asociado a una función javascript, que me devuelve unos valores de la página try.php en el div "chata".
El problema que tengo es que se demora un poco la respuesta, con lo que es un poco desastre ya que es una sala de chat.

ésta es la función:

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function showUser(str,e)
  3. {
  4. var keycode=e.which?e.which:e.keyCode;
  5. //cuando el usuario pulsa intro
  6. if (keycode == 13)
  7. {
  8. var xmlhttp;
  9. var name="<?php echo $emisor;?>";
  10. if(str=="")
  11.  {
  12.   document.getElementById("txtHint").innerHTML="";
  13.   return;
  14.   }
  15. if(window.XMLHttpRequest)
  16.   {// code for IE7+, Firefox, Chrome, Opera, Safari
  17.   xmlhttp=new XMLHttpRequest();
  18.   }
  19. else
  20.   {// code for IE6, IE5
  21.   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  22.   }
  23. xmlhttp.onreadystatechange=function()
  24.    {
  25.    if (xmlhttp.readyState==4 && xmlhttp.status==200)
  26.     {
  27.      newdiv.innerHTML = "<span style='color: #22bbbb;'>"+name+"</span>:"+" "+xmlhttp.responseText;
  28.     }
  29.    }
  30. var add;
  31. var add=document.createElement("div");
  32. var newdiv=add;
  33. var container;
  34. var container = document.getElementById("chata");
  35. container.appendChild(newdiv);
  36. var chap;
  37. var chap=document.getElementById("txt").value;
  38. xmlhttp.open("GET","try.php",true);
  39. xmlhttp.send();
  40.  
  41. }
  42. }


He probado a simplificar no añadiendo el +name+ a la respuesta, pero es lo mismo.
Lo que hago es ir poniendo las respuestas una detrás de otra, creando un nuevo elemento, como en una sala de chat.

He probado tb, poniendo algo muy sencillo en try.php, un simple echo para que no haga falta hacer llamada a la base de datos, pero sigue siendo lento.


Agradecería cualquier ayuda, a ver si puedo conseguir que la respuesta sea inmediata.

Gracias, un saludo.
  #2 (permalink)  
Antiguo 06/02/2012, 12:39
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: respuesta del servidor muy lenta

está comprobado que AJAX no se recomienda para chat debido a su alto consumo de ancho de banda, debes de aplicar técnicas COMET como:

ajax longpolling
APE
HTML5 WebSockets *requiere navegador compatible
Usar algún plugin como flash o applets
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 06/02/2012, 12:49
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: respuesta del servidor muy lenta

hola maycolalvarez,

gracias, no me digas eso ahora, por favor. Llevo más de un mes con ésto...
¿Qué me recomiendas? Es que soy desconocedor de esas técnicas. ¿Las puedo aplicar sobre lo que tengo ya?

Bueno voy a mirar. Gracias de nuevo.
  #4 (permalink)  
Antiguo 06/02/2012, 12:51
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: respuesta del servidor muy lenta

lo siento, pero esa es la realidad, y evadirla no solventará el problema, ya tiene las bases, ahora le toca investigar
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 06/02/2012, 14:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: respuesta del servidor muy lenta

maycolalvarez, investigaré (de hecho ya lo he hecho un poco) sobre ello, pero me parece que el problema que tengo ahora es otro.
Tenía varias funciones disparadas con un mismo evento (el mismo que lanza esta función) y al anularlas parece que va mejor.
  #6 (permalink)  
Antiguo 08/02/2012, 08:10
 
Fecha de Ingreso: octubre-2010
Mensajes: 189
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: respuesta del servidor muy lenta

maycolalvarez, he estado investigando con longpolling y me ha parecido que puede ser muy eficiente. sin embargo me crea algunos problemas.
Voy a abrir otro hilo para ver si tú o alguien más me puede echar una mano.

ciao

p.d además, he leído en algún sitio que Apache no es adecuado para esta técnica. Yo estoy con Apache.

Etiquetas: ajax
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 18:42.