2009-08-02 12 views
34

Simplemente curioso. ¿Cómo funciona el chat en un navegador? Por lo general, si un usuario va a una página web, su navegador web solicita el contenido de la página. Un servidor produce resultados y los envía a la computadora del usuario. Pero al chatear es un poco al revés (bueno, no exactamente). No es el usuario quien solicita un mensaje de chat desde algún servidor, sino el servidor que lo envía directamente. Ahora esto es realmente simple de lograr con un servidor "normal", pero lo que el servidor lo envía a un navegador me confunde directamente. La publicación del mensaje es clara, es simple. Simplemente publica los datos en el servidor con, por ejemplo, ajax o algo así. Pero, ¿cómo la otra computadora "sabe" instantáneamente que se ha escrito un mensaje? Obviamente, debe ser el servidor que lo envía a la otra computadora tan pronto como se haya escrito. Pero de alguna manera eso no se computa en mi cerebro. En mi cerebro, el navegador solo solicita cosas, no solo las obtiene. ¿Cómo haces eso exactamente?¿Cómo funciona el chat en el navegador?

Tome google talk en gmail por ejemplo. ¿Cómo funciona? ¿Cómo se implementa?

Respuesta

11

Hay algunos push technologies, como Comet, pero no están ampliamente implementados. La mayoría de las veces esto se realiza a través del polling en un pequeño intervalo con AJAX y descargando cualquier mensaje nuevo que esté disponible desde el último mensaje descargado.

+0

Eso hace sentido, y así es como pensé que funcionó. AJAX solicita en pequeños intervalos. Sin embargo, al estudiar cómo funciona google talk (con firebug), vi que cuando un amigo me tipeaba mensajes, mi computadora no realizaba ninguna solicitud y, sin embargo, se mostraba el mensaje. – quano

+0

Generalmente puede obligarlo a trabajar manteniendo las conexiones abiertas por un tiempo prolongado y de vez en cuando escurrir un mensaje por la tubería. Sin embargo, tiene que lidiar con tiempos de espera y luego restablecer la conexión. – Joey

+0

¿están usando eventos enviados por el servidor? –

2

Utiliza AJAX - un código JavaScript de cliente que se ejecuta en el navegador del usuario de Gmail envía y recibe los mensajes desde el servidor de Google y los escribe en la ventana del navegador - sin recarga de la página requerida.

4

Orbited es una buena forma de implementar esto, utiliza metodologías cometas. Puede encontrar un tutorial here.

Alguien mencionó ajax polling, pero comet is always better than polling. Bueno, eso es solo un título sensacionalista, pero el cometa es definitivamente más apropiado y puede conducir a menos estrés en el lado del servidor, con el lado derecho de la parte trasera.

0

aplicaciones de chat modernos utilizan (Eventos enviados por el servidor: una característica de HTML5) de la ESS para enviar nuevos mensajes a los navegadores

+0

esto realmente no responde cómo funciona y se implementa. –

Cuestiones relacionadas