¿Qué son las encuestas largas en el desarrollo web?

Breif

El sondeo largo es esencialmente cuando un script Javascript usa AJAX para seguir revisando una página o API para ver si se ha agregado información nueva desde que se cargó la página o la página / API se verificó por última vez.

Detallado

En general, cuando se carga una página web, el idioma del lado del servidor verifica la base de datos en busca de información, formatea la página de solicitud final y envía la página al navegador del usuario, al final de la transacción. El problema es que algunos sitios quieren seguir introduciendo nueva información. Tomemos Quora, por ejemplo, no querría tener que actualizar una página de preguntas para ver si se agregaron nuevas respuestas porque eso sería una molestia. Por lo tanto, Quora implementa un diseño de actualización en vivo, por lo que tan pronto como se agrega una nueva respuesta, el Javascript en la página de preguntas agrega automáticamente la nueva respuesta sin actualizar la página. Facebook realiza tareas similares con Messenger, tu feed y comentarios / me gusta.

Por lo tanto, hay dos formas de implementar un diseño de actualización en vivo; AJAX long sondeo o websockets. Hasta hace poco, la mayoría de los navegadores no admitían websockets, por lo que la encuesta AJAX era la única forma de hacerlo.

Por lo tanto, el sondeo largo de AJAX funciona agregando un script Javascript que verifica una página de carga AJAX (generalmente solo tiene la información que desea, sin encabezado, pie de página, estilos, etc.) y cargando la información de esa página en la página principal, o comprobando una API. La comprobación de las API es probablemente la más común de las dos (según mi experiencia). Básicamente, lo que sucede es que el objeto Javascript mantendrá una copia de la API en la memoria desde la primera vez que se inicializa la página, luego periódicamente el objeto buscará la API nuevamente, la comparará con la API en la memoria y verá si hay algo nuevo o cambiado. En caso de que algo cambie, la página se actualizará (si el programador es bueno, solo se cambiará la sección que se cambió) sin actualizar la página. Si nada ha cambiado, no pasa nada.

Por contraste, los WebSockets funcionan en la dirección opuesta. Cuando se devuelve la página de solicitud, la conexión al servidor permanece abierta. Luego, cuando algo cambia, el servidor se pone en contacto con el navegador a través de websockets y le dice al navegador lo que cambió.

El sondeo largo es cuando el servidor no cierra la conexión y la página actúa como si todavía se estuviera cargando para simular una transacción en tiempo real.