Long Polling es un patrón de comunicación asíncrona que permite a un servidor enviar datos a un cliente tan pronto como estén disponibles, sin necesidad de que el cliente realice solicitudes repetitivas (short polling). A diferencia del short polling, donde el cliente envía solicitudes periódicas y el servidor responde inmediatamente (a menudo con 'no data'), en Long Polling el cliente envía una solicitud HTTP al servidor, y este retiene la conexión abierta. El servidor solo responde cuando tiene nuevos datos para enviar o cuando se alcanza un tiempo de espera predefinido. Una vez que el cliente recibe la respuesta, procesa los datos y abre inmediatamente una nueva conexión de Long Polling.

Esta técnica ha sido ampliamente utilizada en el pasado para implementar notificaciones en tiempo real o actualizaciones de datos antes de la popularización de WebSockets. Ejemplos notables incluyen servicios de chat web como Facebook Chat (en sus primeras versiones) y Google Talk, donde los clientes mantenían una conexión de Long Polling para recibir mensajes instantáneamente. También se ha empleado en paneles de control administrativos o sistemas de monitoreo para actualizar métricas o estados sin recargar la página completa, y en APIs que necesitan notificar a los clientes sobre eventos asíncronos, como la finalización de un proceso de larga duración.

Para un arquitecto, Long Polling es crucial porque ofrece una alternativa más eficiente al short polling para la entrega de eventos casi en tiempo real, reduciendo la latencia percibida y el número de solicitudes HTTP redundantes. Sin embargo, introduce desafíos de escalabilidad en el lado del servidor, ya que mantener un gran número de conexiones abiertas simultáneamente consume recursos (memoria, descriptores de archivo, procesos). Requiere una gestión cuidadosa de los timeouts y la reconexión para manejar fallos de red y garantizar la resiliencia. Aunque WebSockets es la solución preferida hoy en día para la comunicación full-duplex en tiempo real, Long Polling sigue siendo una opción viable y más sencilla de implementar para escenarios donde la comunicación es predominantemente unidireccional del servidor al cliente y la compatibilidad con navegadores antiguos o proxies restrictivos es una preocupación.