Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: kakashi20 en 3 Abril 2014, 01:15 am



Título: chat escribiendo mensaje
Publicado por: kakashi20 en 3 Abril 2014, 01:15 am
hola

quisiera saber como hacen en los chat cuando una persona esta escribiendo un mensaje y a la otra le aparece un mensaje "el usuario esta escribiendo...".

alguna idea ?

gracias..


Título: Re: chat escribiendo mensaje
Publicado por: engel lex en 3 Abril 2014, 01:18 am
jscript

algo como
Código
  1. if(getElementById("cuadro_chat").value!=""){
  2.    enviar_al_servidor_que_el_usuario_esta_escribiendo()
  3. }


Título: Re: chat escribiendo mensaje
Publicado por: kakashi20 en 3 Abril 2014, 03:23 am
Como haría para mandar esas variables al servidor y que las viera el otro usuario en tiempo real ?


Título: Re: chat escribiendo mensaje
Publicado por: engel lex en 3 Abril 2014, 03:29 am
hay un par de métodos, pero la más común seria un httpRequest, mejor conocido por ajax, es una comunicación espontanea (asincronica) con el servidor, donde en lugar de que todo el navegador cargue una pagina, un jscript llama a una pagina del servidor para mandar o recibir contenido (como funciona el chat en si mismo), allí en lugar de pasarle el texto del chat, solo le envía un comando de que se está escribiendo, el servidor lo procesa y lo pasa al otro usuario


Título: Re: chat escribiendo mensaje
Publicado por: kakashi20 en 3 Abril 2014, 05:14 am
Al decir que se manda al servidor la única forma que se me ocurre es que se modifique vía ajax un estado en la bd y el otro usuario tenga un script con setInterval() y este verifiqué el estado en la bd y dependiendo de este se coloque que el otro usuario está es escribiendo o no....

Sí uso está forma, al usar el setInterval() en tiempos muy bajos., cada llamado a la bd, digamos cada 5 segundos, tumbaría la conexión de sitio web.

Esta es la forma o habría alguna otra forma ?

Gracias


Título: Re: chat escribiendo mensaje
Publicado por: engel lex en 3 Abril 2014, 05:24 am
no, con 1 llamada cada 5 segundos por protocolo http puedes tener un ping de 90ms y la petición tardaría 10ms tendrías que 10 usuarios pueden entrar en el lapso de 1 segundo sin solaparse, 50.000 usuarios harían mantendrían 1.000 peticiones simultaneas abiertas...  eso pesimistamente... creo que es un numero fácilmente manejable (tomando en cuenta que si tienes más de 50mil usuarios activos simultáneos, no vas a ser tan avaro como para pagar 1 solo server)


Título: Re: chat escribiendo mensaje
Publicado por: kakashi20 en 3 Abril 2014, 15:08 pm
Ya había probado el setInterval haciendo una llamada cada 10 segundos para sacar una info de la bd pero llegaba un momento que me tumbaba la conexión ya que hacia una conexión cada 10 segundos a la bd.

Ahora, la conexión que tu medices es a la bd o simplemente usando las variables de sesión y haciendo un setInterval preguntando sí esas variables contienen algo ?

No se, no se me ocurre otra cosa.

Gracias


Título: Re: chat escribiendo mensaje
Publicado por: EFEX en 3 Abril 2014, 15:15 pm
La otra es utilizando websockets.


Título: Re: chat escribiendo mensaje
Publicado por: engel lex en 4 Abril 2014, 02:07 am
el websocket nunca me pareció buena idea para eso, ya que 50.000 usuarios, si serían 50.000 conexioes abiertas simultaneas ocupado espacio en ram y siendo registradas por procesador