Ver Mensaje Individual
  #2 (permalink)  
Antiguo 17/08/2012, 02:13
Avatar de Hugo_Euan
Hugo_Euan
 
Fecha de Ingreso: abril-2011
Ubicación: Mérida, Yucatán, México
Mensajes: 193
Antigüedad: 13 años, 10 meses
Puntos: 71
Respuesta: es normal hacer asi un chat?

^^ interesante... pues... tal vez.. así como lo estas pensando... no... es decir.. si piensas que cuando el usuario escriba.. y de entera automaticamente se observe en el otro usuario sin que haya un evento que permita saber la accion.. eso no se puede ^^ es de ley que tiene que haber un listener...

no sé si me explique.. pero bien... trataré de dejarlo mas claro...

debe existir un evento.. que "escuche" las peteciones y envios aunque no siempre reciba y envie datos... algo así por el estilo

debe haber una función que cache el evento de la tecla enter y del boton para enviar el mensaje... por ejemplo usando un poco de jQuery

Código Javascript:
Ver original
  1. var MyDocument=$(document); //global vars
  2. var keyCode; // global vars
  3.  
  4. MyDocument.ready(INITIALIZED);
  5.  
  6. function INITIALIZED(){
  7.     MyFunction=$("#BtnEnter"); // añadimos el elemento (el boton enviar)
  8.     MyFunction.click(SUBMIT); // al hacer click llamamos a la funcion submit
  9.     $(document).keypress(function(e) {
  10.         if(e.keyCode == 13){ // al presionar la tecla enter
  11.             SUBMIT(); // llamamos a la funcion submit
  12.         }
  13.     });
  14. }
  15.  
  16. function SUBMIT(){
  17.     // obtenemos el valor y enviamos.... (tus parametros)
  18. }

con lo anterior.. ya tenemos listo el boton y la tecla enter para enviar ^^ ahora solo falta un listener que se encargará de consultar si existen nuevos valores para despues mostrarlos... para ello puedes hacer uso de los Iframes... lo cual no te recomiendo ^^ pero tambien lo puedes hacer mediante AJAX... te conviene investigar un poquito.. si no sabes queda de tarea... aqui lo puedes consultar Jquery AJAX
bien.. sabiendo un poquito de ajax.. ahora solo te queda hacer una función que se ejecute cada 1 segundo.. si asi prefieres.. la diferencia entre este metodo y el que usas.. pudiera parecer nada.. pero es grande.. en primera por que no se refresca la pagina completa.. al no hacer eso el rendimiento es mayor.. ya que no todos los datos son actualizados....

Código Javascript:
Ver original
  1. var time_elapsed; //global vars
  2. var time_refresh = 1000; //global vars - 1000 milliseconds = 1 second
  3.  
  4. time_elapsed = setInterval('LISTEN();', time_refresh ); // va dentro de INITIALIZED despues del cierre de corchete de $(document).keypress
  5.  
  6. function LISTEN (){
  7.     //se efectua si hay datos nuevos en la BD con AJAX, si existe nuevos elementos se imprimen, si no.. sigue en espera....
  8. }

básicamente esas son las pautas para lo que quieres lograr.. como vez.. todo se centra en AJAX....

Espero te sea de utilidad.. Saludos y Éxito....
__________________
Se acepta Karma (:

Si Dios con nosotros, quien contra nosotros !!