He notado que algunos de mis sitios ajax-heavy (los que visito, no los que he construido), tienen ciertas características de actualización automática. Por ejemplo, en GMail, si recibo un mensaje nuevo, veo el nuevo mensaje sin una nueva página. Es lo mismo con el cliente de mensajería instantánea basado en navegador de Facebook. Por lo que puedo decir, no hay ningún applet de Java que maneje el enlace del servidor-navegador, así que me queda asumir que lo está haciendo AJAX y quizás algún elemento que desconozco. Así que por mi mejor conjetura, se hace en una de dos maneras:Reverse AJAX? ¿Los cambios de datos pueden ser 'EMPUJADOS' al script?
El javascript hace un "ping" constante a un script del lado del servidor, comprueba si hay actualizaciones que podrían estar disponibles (lo que explicaría por qué algunos de estas páginas pone a punto cualquier otra página de servicio pesado). o
El javascript se queda sin hacer nada y un script del lado del servidor realmente "empuja" las actualizaciones del navegador. Pero no estoy seguro si esto es posible. Me imagino que hay algún tipo de función AJAX que todavía suena, pero todo simplemente pregunta "¿Alguna actualización?" y el script del servidor tiene un booleano simple que dice "nope" o "me complace que haya preguntado". Pero si este es el caso, cualquier cambio en los datos necesitaría llamar al script directamente para que tenga listos los cambios en los datos y haga el cambio a esa función booleana.
¿Es eso posible/factible/cómo funciona? Imagino algo como:
Alguien envía una actualización de correo electrónico/IM/DB al servidor, el servidor llama al script usando la URL del script más alguna variable GET relevante, el script toma nota del cambio y actualiza la variable "actualizaciones disponibles" , el AJAX recibe la respuesta de que de hecho hay actualizaciones, AJAX ejecuta sus funciones normales de "página de actualización", que ejecuta los scripts de actualización normales y los envía al navegador.
Lo pregunto porque parece realmente ineficiente que el js solo haga una comprobación constante que requiere a) que el servidor haga el trabajo cada 1,5 segundos, yb) que mi navegador funcione cada 1,5 segundos solo para que en mi extremo Puedo decir "¡Oh chico, tengo un mensaje instantáneo! ¡Como un verdadero cliente de mensajería instantánea!"
Guau, incluso utilicé las mismas frases. eso es casi embarazosoPero mi búsqueda inicial sobre cómo hacer esto en PHP menciona infinitos scripts de bucle. ¿Tiene que producirse un ciclo infinito en algún lugar a lo largo de la línea para que funcione este tipo de cosas? ¿Por qué el origen de datos modificado real (servidor IMAP, base de datos, archivo txt, lo que sea) no puede activar el script para reactivarlo y manejarlo? – Anthony