Articulo de referencia

Tecnología de empuje

La tecnología push, también conocida como server push, es un método de comunicación en el que la comunicación es iniciada por un servidor en lugar de un cliente . Este enfoque e...

La tecnología push, también conocida como server push, es un método de comunicación en el que la comunicación es iniciada por un servidor en lugar de un cliente . Este enfoque es diferente del método " pull ", donde la comunicación es iniciada por un cliente. [ 1 ]

En la tecnología push, los clientes pueden expresar sus preferencias por ciertos tipos de información o datos, generalmente mediante un proceso conocido como modelo de publicación-suscripción . En este modelo, un cliente se suscribe a canales de información específicos alojados por un servidor. Cuando hay contenido nuevo disponible en estos canales, el servidor envía automáticamente esta información al cliente suscrito.

En determinadas condiciones, como políticas de seguridad restrictivas que bloquean las solicitudes HTTP entrantes , la tecnología push a veces se simula mediante una técnica llamada sondeo. En estos casos, el cliente comprueba periódicamente con el servidor si hay información nueva disponible, en lugar de recibir actualizaciones automáticas.

Uso general

Las videoconferencias síncronas y la mensajería instantánea son ejemplos de servicios push. Los mensajes de chat y, en ocasiones, los archivos se envían al usuario en cuanto el servicio de mensajería los recibe. Tanto los programas descentralizados peer-to-peer (como WASTE ) como los centralizados (como IRC o XMPP ) permiten el envío de archivos, lo que significa que el remitente inicia la transferencia de datos, no el destinatario.

El correo electrónico también puede ser un sistema push: SMTP es un protocolo push (véase Correo electrónico push ). Sin embargo, el último paso —desde el servidor de correo hasta el ordenador— suele utilizar un protocolo pull como POP3 o IMAP . Los clientes de correo electrónico modernos hacen que este paso parezca instantáneo consultando repetidamente el servidor de correo, comprobando con frecuencia si hay mensajes nuevos. El protocolo IMAP incluye el comando IDLE , que permite al servidor avisar al cliente cuando llegan nuevos mensajes. El BlackBerry original fue el primer ejemplo popular de correo electrónico push en un contexto inalámbrico.

Otro ejemplo es PointCast Network , que tuvo gran repercusión en la década de 1990. Ofrecía noticias y datos bursátiles como salvapantallas. Tanto Netscape como Microsoft integraron la tecnología push mediante el formato de definición de canal (CDF) en su software durante el apogeo de la guerra de navegadores , pero nunca llegó a ser muy popular. El CDF cayó en desuso y se eliminó de los navegadores de la época, siendo reemplazado en la década de 2000 por RSS (un sistema pull).

Otros usos de las aplicaciones web con capacidad de envío de notificaciones push incluyen la distribución de actualizaciones de software ("actualizaciones push"), la distribución de datos de mercado (tickers bursátiles), sistemas de chat/mensajería en línea ( webchat ), subastas, apuestas y juegos en línea, resultados deportivos, consolas de monitorización y monitorización de redes de sensores .

Ejemplos

Envío web

La propuesta de Web push del Grupo de Trabajo de Ingeniería de Internet (IETF) es un protocolo sencillo que utiliza HTTP versión 2 para entregar eventos en tiempo real, como llamadas o mensajes entrantes, que se pueden entregar (o "enviar") de manera oportuna. El protocolo consolida todos los eventos en tiempo real en una sola sesión, lo que garantiza un uso más eficiente de los recursos de red y de radio. Un único servicio consolida todos los eventos y los distribuye a las aplicaciones a medida que llegan. Esto requiere solo una sesión, evitando costos adicionales por duplicación. [ 2 ]

Las notificaciones web forman parte del estándar W3C y definen una API para notificaciones al usuario final. Una notificación permite alertar al usuario sobre un evento, como la entrega de un correo electrónico, fuera del contexto de una página web. [ 3 ] Como parte de este estándar, la API Push está totalmente implementada en Chrome , Firefox y Edge , y parcialmente implementada en Safari desde febrero de 2023. . [ 4 ] [ 5 ]

Envío de datos desde el servidor HTTP

El envío de datos desde un servidor HTTP (también conocido como transmisión HTTP) es un mecanismo para enviar datos no solicitados (asíncronos) desde un servidor web a un navegador web . El envío de datos desde un servidor HTTP se puede lograr mediante diversos mecanismos.

Como parte de HTML5, la API Web Socket permite que un servidor web y un cliente se comuniquen a través de una conexión TCP full-duplex .

Generalmente, el servidor web no cierra una conexión después de que se hayan enviado los datos de respuesta a un cliente. El servidor web deja la conexión abierta para que, si ocurre un evento (por ejemplo, un cambio en los datos internos que deba notificarse a uno o varios clientes), pueda enviarse inmediatamente; de ​​lo contrario, el evento tendría que ponerse en cola hasta que se reciba la siguiente solicitud del cliente. La mayoría de los servidores web ofrecen esta funcionalidad a través de CGI (por ejemplo, scripts de encabezados no analizados en Apache HTTP Server ). [ 6 ] [ 7 ] El mecanismo subyacente para este enfoque es la codificación de transferencia por fragmentos .

Otro mecanismo está relacionado con un tipo MIMEmultipart/x-mixed-replace especial llamado , que fue introducido por Netscape en 1995. Los navegadores web lo interpretan como un documento que cambia cada vez que el servidor envía una nueva versión al cliente. [ 8 ] Todavía es compatible con Firefox , Opera y Safari hoy en día, pero Internet Explorer lo ignora [ 9 ] y Chrome solo lo admite parcialmente . [ 10 ] Se puede aplicar a documentos HTML y también para la transmisión de imágenes en aplicaciones de cámara web .

La propuesta WHATWG Web Applications 1.0 [ 11 ] incluye un mecanismo para enviar contenido al cliente. El 1 de septiembre de 2006, el navegador web Opera implementó este nuevo sistema experimental en una función llamada " Server-Sent Events " [ 12 ] [ 13 ] . Ahora forma parte del estándar HTML5 [ 14 ] .

Pushlet

En esta técnica, el servidor aprovecha las conexiones HTTP persistentes , dejando la respuesta perpetuamente "abierta" (es decir, el servidor nunca finaliza la respuesta), engañando efectivamente al navegador para que permanezca en modo "cargando" después de que la carga inicial de la página se considere completa. El servidor luego envía periódicamente fragmentos de JavaScript para actualizar el contenido de la página, logrando así la capacidad de envío de actualizaciones. Al usar esta técnica, el cliente no necesita applets de Java u otros complementos para mantener una conexión abierta con el servidor; el cliente es notificado automáticamente sobre los nuevos eventos, enviados por el servidor. [ 15 ] [ 16 ] Sin embargo, una desventaja seria de este método es la falta de control que tiene el servidor sobre el tiempo de espera del navegador; siempre es necesario actualizar la página si se produce un tiempo de espera en el lado del navegador.

Sondeos a largo plazo

El long polling no es en sí mismo un verdadero push; el long polling es una variación de la técnica de sondeo tradicional, pero permite emular un mecanismo push en circunstancias en las que un push real no es posible, como en sitios con políticas de seguridad que requieren el rechazo de las solicitudes HTTP entrantes. [ 17 ] [ 18 ]

Con el sondeo prolongado, el cliente solicita más información al servidor, al igual que en el sondeo normal, pero con la expectativa de que el servidor no responda de inmediato. Si el servidor no tiene información nueva para el cliente cuando se recibe la solicitud, en lugar de enviar una respuesta vacía, mantiene la solicitud abierta y espera a que la información de respuesta esté disponible. Una vez que dispone de información nueva, el servidor envía inmediatamente una respuesta HTTP al cliente, completando así la solicitud HTTP abierta. Al recibir la respuesta del servidor, el cliente suele realizar otra solicitud inmediatamente. De esta forma, se elimina la latencia de respuesta habitual (el tiempo entre el momento en que la información está disponible por primera vez y la siguiente solicitud del cliente) asociada a los clientes de sondeo. [ 19 ]

Por ejemplo, BOSH es una técnica HTTP popular y de larga duración que se utiliza como una alternativa de sondeo largo a una conexión TCP continua cuando dicha conexión es difícil o imposible de emplear directamente (por ejemplo, en un navegador web); [ 20 ] también es una tecnología subyacente en XMPP , que Apple utiliza para su soporte de notificaciones push de iCloud.

Relés de socket XML Flash

Esta técnica, utilizada por aplicaciones de chat , emplea el objeto XML Socket en una película Adobe Flash de un solo píxel . Mediante JavaScript , el cliente establece una conexión TCP con un relé unidireccional en el servidor. El servidor de relés no lee nada de este socket ; en su lugar, envía inmediatamente al cliente un identificador único . A continuación, el cliente realiza una solicitud HTTP al servidor web, incluyendo este identificador. La aplicación web puede entonces enviar mensajes dirigidos al cliente a una interfaz local del servidor de relés, que los reenvía a través del socket Flash. La ventaja de este enfoque radica en que aprovecha la asimetría natural de lectura-escritura típica de muchas aplicaciones web, incluido el chat, y, en consecuencia, ofrece una alta eficiencia. Dado que no acepta datos en los sockets de salida, el servidor de relés no necesita monitorizar las conexiones TCP salientes , lo que permite mantener abiertas decenas de miles de conexiones concurrentes. En este modelo, el límite de escalabilidad lo constituye la pila TCP del sistema operativo del servidor subyacente.

Entrega confiable de datos grupales (RGDD)

En servicios como la computación en la nube , para aumentar la fiabilidad y disponibilidad de los datos, estos suelen distribuirse (replicarse) en varias máquinas. Por ejemplo, el Sistema de Archivos Distribuidos de Hadoop (HDFS) crea dos copias adicionales de cualquier objeto almacenado. RGDD se centra en la distribución eficiente de un objeto desde una ubicación a múltiples ubicaciones, ahorrando ancho de banda mediante el envío de un número mínimo de copias (solo una en el mejor de los casos) del objeto a través de cualquier enlace de la red. Por ejemplo, Datacast [ 21 ] es un esquema para la entrega a múltiples nodos dentro de centros de datos que se basa en topologías regulares y estructuradas, y DCCast [ 22 ] es un enfoque similar para la entrega entre centros de datos.

Notificación push

Una notificación push es un mensaje que se "envía" desde un servidor o aplicación back-end a una interfaz de usuario, por ejemplo, aplicaciones móviles [ 23 ] o aplicaciones de escritorio. Apple introdujo las notificaciones push para iPhone en 2009, [ 24 ] y en 2010 Google lanzó "Google Cloud to Device Messaging" (sustituido por Google Cloud Messaging y luego por Firebase Cloud Messaging ). [ 25 ] En noviembre de 2015, Microsoft anunció que el Servicio de Notificaciones de Windows se ampliaría para utilizar la arquitectura de la Plataforma Universal de Windows, lo que permitiría enviar datos push a Windows 10 , Windows 10 Mobile , Xbox y otras plataformas compatibles mediante llamadas a la API universales y solicitudes POST. [ 26 ]

Las notificaciones push se dividen principalmente en dos enfoques: notificaciones locales y notificaciones remotas. [ 27 ] Para las notificaciones locales, la aplicación programa la notificación con el sistema operativo del dispositivo. La aplicación configura un temporizador en sí misma, siempre que pueda ejecutarse continuamente en segundo plano. Cuando se alcanza la hora programada del evento o se cumple la condición programada, el mensaje se muestra en la interfaz de usuario de la aplicación.

Las notificaciones remotas son gestionadas por un servidor remoto. En este caso, la aplicación cliente debe registrarse en el servidor con una clave única (por ejemplo, un UUID o un token de dispositivo de Apple ). El servidor transmite el mensaje asociado a la clave única para entregarlo al cliente mediante un protocolo cliente/servidor acordado, como HTTP o XMPP . Cuando la notificación push llega al cliente, puede provocar la visualización de notificaciones o mensajes breves, la configuración de insignias en los iconos de las aplicaciones, el parpadeo o la iluminación continua del LED de notificación , o la reproducción de sonidos de alerta para llamar la atención del usuario. [ 28 ] Las aplicaciones suelen utilizar las notificaciones push para informar a los usuarios. El contenido de los mensajes se puede clasificar en las siguientes categorías de ejemplo:

  • Mensajes de chat de una aplicación de mensajería como Facebook Messenger enviados por otros usuarios. [ 29 ]
  • Ofertas especiales del vendedor: Un vendedor puede querer anunciar sus ofertas a los clientes.
  • Recordatorios de eventos: Algunas aplicaciones permiten al cliente crear un recordatorio o alerta para una hora específica.
  • Cambios en los temas a los que se está suscrito: Los usuarios pueden querer recibir actualizaciones sobre el clima en su ubicación o monitorear una página web para realizar un seguimiento de los cambios, por ejemplo.

Las notificaciones push en tiempo real pueden plantear problemas de privacidad, ya que pueden utilizarse para vincular identidades virtuales de seudónimos de redes sociales con las identidades reales de los propietarios de teléfonos inteligentes. [ 30 ] El uso de notificaciones push innecesarias con fines promocionales ha sido criticado como un ejemplo de robo de atención . [ 31 ]

Véase también

Referencias

  1. "Tecnología Push" . Techopedia . 18 de noviembre de 2012. Consultado el 23 de julio de 2023 .
  2. M. Thomson, E. Damaggio y B. Raymor (22 de octubre de 2016). "Entrega genérica de eventos mediante HTTP Push" . Borrador de Internet . Grupo de trabajo de ingeniería de Internet . Recuperado el 28 de octubre de 2016 .
  3. "Estándar de API de notificaciones" . notifications.spec.whatwg.org . Consultado el 30 de abril de 2024 .
  4. "API Push" . Consultado el 30 de abril de 2024 .
  5. "Push API - Web APIs | MDN" . developer.mozilla.org . 22/02/2023 . Consultado el 16/05/2023 .
  6. "Mecanismo HTTP Push" . Comunidad DEV . 31/01/2026 . Consultado el 14/04/2026 .
  7. "Eventos enviados por el servidor" . www.enjoyalgorithms.com . Consultado el 14 de abril de 2026 .
  8. Programación CGI en la World Wide Web. Libro de O'Reilly que explica cómo usar el servidor de Netscape para el envío de datos.
  9. Documentos Server-Push (HTML y XHTML: La guía definitiva) Archivado el 17/04/2008 en Wayback Machine Libro de O'Reilly que explica el server-push
  10. Eliminar la compatibilidad con los recursos principales multipart/x-mixed-replace
  11. "Especificación de aplicaciones web 1.0" .
  12. "Transmisión de eventos a navegadores web" . 1 de septiembre de 2006. Consultado el 23 de marzo de 2007 .
  13. "Opera toma la delantera con soporte AJAX entre los navegadores: transmisión más eficiente" . 1 de septiembre de 2006. Archivado del original el 18 de marzo de 2007. Consultado el 23 de marzo de 2007 .
  14. "Estándar HTML: eventos enviados por el servidor" . html.spec.whatwg.org . 31 de marzo de 2022. Consultado el 1 de abril de 2022 .
  15. "Introducción a Pushlets" . Archivado del original el 5 de agosto de 2009. Consultado el 5 de junio de 2008 .
  16. Van Den Broecke, Just (1 de marzo de 2000). "Pushlets: Enviar eventos desde servlets a navegadores cliente DHTML" . JavaWorld . Consultado el 13 de julio de 2020 .
  17. "¿Qué es el Long Polling y cómo funciona?" . PubNub . Consultado el 14 de abril de 2026 .
  18. "Long Polling vs WebSockets: cómo lograr comunicación en tiempo real, día 55 del diseño del sistema" . Comunidad DEV . 13 de octubre de 2025. Consultado el 14 de abril de 2026 .
  19. Saint-Andre, Peter; Loreto, Salvatore; Salsano, Stefano; Wilkins, Greg (abril de 2011). "RFC6202 - Problemas conocidos y mejores prácticas para el uso de sondeo largo y transmisión en HTTP bidireccional" . tools.ietf.org . doi : 10.17487/RFC6202 . Consultado el 14 de mayo de 2016 .
  20. "XEP-0124: Flujos bidireccionales sobre HTTP síncrono (BOSH)" . Consultado el 26 de junio de 2012 .
  21. C. Guo; et al. (1 de noviembre de 2012). "Datacast: un servicio de entrega de datos grupales escalable, eficiente y confiable para centros de datos" . Microsoft Research . ACM . Recuperado el 6 de junio de 2017 . 
  22. M. Noormohammadpour; et al. (10 de julio de 2017). "DCCast: Transferencias eficientes de punto a multipunto a través de centros de datos" . USENIX . Consultado el 6 de junio de 2017 . 
  23. Wohllebe, Atilla. (2020). "Aceptación del consumidor de las notificaciones push de aplicaciones: revisión sistemática sobre la influencia de la frecuencia" . International Journal of Interactive Mobile Technologies . 14 (13): 36– 47. doi : 10.3991/ijim.v14i13.14563 .
  24. "Anuncian servicio de notificaciones push para iPhone para desarrolladores" . Engadget . Consultado el 18 de octubre de 2016 .
  25. "Se presenta Google Cloud Messaging para Android (GCM), que reemplazará al marco C2DM" . InfoQ . Consultado el 18 de octubre de 2016 .
  26. mijacobs. "Descripción general de los Servicios de notificación push de Windows (WNS)" . docs.microsoft.com . Consultado el 20 de octubre de 2017 .
  27. "Notificaciones locales y remotas en detalle" . developer.apple.com . Consultado el 18 de octubre de 2016 .
  28. "Notificaciones push para Android e iOS – Blog – JatApp" . jatapp.com . Archivado del original el 20 de octubre de 2017. Consultado el 20 de octubre de 2017 .
  29. "¿Cómo ajusto las notificaciones push de Facebook en mi móvil? | Centro de ayuda de Facebook | Facebook" . www.facebook.com . Consultado el 18 de octubre de 2016 .
  30. Loreti, Pierpaolo; Bracciale, Lorenzo; Caponi, Alberto (2018). "Ataque Push: Vinculación de identidades virtuales y reales mediante notificaciones push móviles" . Future Internet . 10 (2): 13. doi : 10.3390/fi10020013 .
  31. McFedries, Paul (22 de mayo de 2014). "¡Alto, ladrón de atención!" . IEEE Spectrum . Instituto de Ingenieros Eléctricos y Electrónicos . Recuperado el 9 de agosto de 2021 .
  • Taller Push del W3C. Un taller de 1997 que trató sobre la tecnología push y algunos de sus primeros ejemplos.
  • Transmisión HTTP con Ajax: Descripción de la transmisión HTTP del sitio web Ajax Patterns.
  • Recomendación candidata para la API Web Socket
  • Especificación preliminar de eventos enviados por el servidor de HTML5