Estoy creando un sistema de chat en un sitio web ASP.Net MVC, y quiero que el usuario vea si el otro usuario de chat ahora está escribiendo un mensaje.

Al igual que aparece en gtalk o msn, cuando el otro usuario comienza a escribir, dice: "el usuario A está escribiendo ..." y luego oculta este mensaje cuando el usuario se detiene.

¿Cuál será el concepto detrás de esta característica para implementar en un sitio web y qué debo saber para construirla de la manera correcta?

0
Amr Elgarhy 1 ago. 2011 a las 23:11

3 respuestas

La mejor respuesta

Todo esto se hace a través de AJAX

El Usuario1 envía un valor writing=true al servidor tan pronto como comienza la escritura, y writing=false cuando se envía el mensaje.

El usuario2 sondea el servidor cada x segundos para ver if(writing){display "User1 is writing a message"}

Obviamente, esto es bidireccional, por lo que Usuario1 y Usuario2 empujan y extraen el booleano writing del servidor.

Sugeriría usar jQuery y JSON para este proceso.

1
Chase Florell 1 ago. 2011 a las 19:15

Busque un "cambio" (o equivalente) para su texto de edición. Inicie un temporizador cuando ocurra y envíe un mensaje ajax a los servidores de chat para notificarles. Cuando se envía el texto o se agota el temporizador, borre el mensaje.

0
ethrbunny 1 ago. 2011 a las 19:15

Del lado del cliente, tenga un conteo de temporizador de 500 ms y una variable sentState establecida en false.

Cada vez que el cliente escriba algo, restablezca ese temporizador; si se envía estado, envíe una solicitud AJAX al servidor indicando que el cliente está escribiendo. Finalmente, establezca sentState en verdadero.

Si el temporizador alcanza los 500 ms, envíe una solicitud AJAX al servidor indicando que el cliente ya no está escribiendo y configure sentState en falso.

0
Alex Turpin 1 ago. 2011 a las 19:17